Introduction

The aim of this part of the project is to use occurrence data of bivalves from across the Cretaceous–Palaeogene boundary to reconstruct extinction prevalence and potential drivers of this.

Project environment

renv::restore()

Renv, used above, sets up a project environment that stores the packages and versions used to make the project work. The idea of this is to enable you to go back to this after some time and get the project working again, no matter what’s changed or been updated in the meantime. Similarly, send the project to a collaborator and they can set things up to be working quickly and easily without having to search through packages to install. I’ve already initialized this project, to get things going on your computer should a matter of opening R in this filter. Renv will then install itself and any packages needed into its own library.

The following packages are used:

  • CoordinateCleaner: for checking occurrence data quality (Zizka et al. 2019) (requires proj and gdal).
  • countrycode: for cleaning occurrence data (Arel-Bundock, Enevoldsen, and Yetman 2018).
  • jsonlite: reading JSON-structured data (Ooms 2014).
  • rnaturalearth: country outlines for plotting maps (South 2017a).
  • rnaturaleearthdata: for checking occurrence localities (South 2017b).
  • sf: wrangling geometry and map data (Pebesma 2018).
  • tidyverse: data wrangling pipelines (Wickham et al. 2019).
  • viridis: colour blind-friendly plotting (Garnier et al. 2021).
library(ncdf4)
library(tidyverse)
library(brms)
library(bayesplot)
library(CoordinateCleaner)
library(countrycode)
library(GeoRange)
library(jsonlite)
library(rgeos)
library(rnaturalearth)
library(rnaturalearthdata)
library(sf)
library(stars)
library(stringdist)
library(viridis)
library(ncdump) # needs to go after tidyverse I think
library(lattice)
library(reticulate)

options(mc.cores = parallel::detectCores())
rstan::rstan_options(auto_write = TRUE)

Useful background and sites

I’m rather opinionated about code and formatting. I think it’s generally better to be strict about the packages you use and how you write the code. I tend to use tidyverse style and formatting, which has a guide written by Hadley Wickham, who’s created some of the most used R packages. Google have a style guide for writing R code that I recommend following, but as a guide can and should be changed to meet your needs.

I use piping a lot. This means passing the result of one function as the first argument of the next line. R has a native version shown as %>%, but this is rather new (version 4.1.0). tidyverse and package magrittr has had a different version for while that looks like %>% and is probably the better to use, so you might see that online more often.

This guide is written in R Markdown, a text format that combines text and code and can be run easily in R Studio and other environments. I also tend to use ggplot for plotting, so have a look here for the low-down on that package.

Acquiring data

The data come from the Paleobiology Database (PBDB). Occurrences are downloaded though their API.

First we can download the data as a JSON file and save this to disc: this is our master data set. For this, I’ve gathered occurrences of Bivalvia from the Cretaceous and Palaeogene with all of the occurrence, geographical, systematic, and ecological data. This only need be done once (and I’ve included the file in the repository already).

bivalve_pbdb_url <-
  paste0(
    "https://paleobiodb.org/data1.2/", # PBDB API URL
    "occs/", # occurrences
    "list.json?", # download a JSON file
    "base_name=Bivalvia&", # download bivalve occurrences
    "interval=Cretaceous,Paleogene&", # temporal range to include
    "show=full" # include full data
  )
bivalve_pbdb_file <- paste0(Sys.Date(), "-bivalve_pbdb_occurrences.json")
download.file(bivalve_pbdb_url, bivalve_pbdb_file, method = "curl")

The data file can then be loaded into R, which gives a list with length two: the first element ($elapsed_time) gives the original download time and the second element ($records) is a data.frame of the PBDB occurrence data. We keep just this second part. To save space, I’ve downloaded a version and stored this as a compressed tar file that needs to be expanded first with untar.

bivalve_pbdb_file <- "2022-03-18-bivalve_pbdb_occurrences"
untar(paste0(bivalve_pbdb_file, ".tgz"))
bivalve_pbdb_data <-
  jsonlite::fromJSON(paste0(bivalve_pbdb_file, ".json"))$records %>%
  as_tibble() %>%
  mutate(across(c(rnk, lng, lat), as.numeric))

We won’t need data from all the columns, but the important few are:

A full list of the fields is at the bottom of this page.

Querying data

It’s a good check to have a quick look at the data to check its size and what different values are contained within. Most of the PBDB data are categorical or strings, which makes it a little more difficult (you can’t plot a bar chart for instance, except you can). A few things to check:

bivalve_pbdb_data %>%
  filter(rnk == 3) %>%
  group_by(tna) %>%
  summarize(n())
## # A tibble: 3,935 × 2
##    tna                                  `n()`
##    <chr>                                <int>
##  1 Abra (Abra) petropolitana                6
##  2 Abra (Syndosmya) cygnea                  1
##  3 Abra (Syndosmya) splendens               4
##  4 Abra deshayesi                           2
##  5 Abra nitens                             40
##  6 Abra recluzii                            1
##  7 Abra suessoniensis                       2
##  8 Acanthocardia (Acanthocardia) reedi      2
##  9 Acanthocardia (Schedocardia) tuomeyi    31
## 10 Acanthocardia becksii                    2
## # … with 3,925 more rows

Or a more fun thing to plot the occurrences from different families.

family_occurrences <-
  bivalve_pbdb_data %>%
    filter(rnk == c(3, 4, 5)) %>%
    group_by(fml) %>%
    summarize(family_occurrences = n())
family_occurrences %>%
  ggplot(
    aes(x = reorder(fml, desc(family_occurrences)), y = family_occurrences)
  ) +
    geom_col() +
    coord_flip()

family_occurrences %>%
  slice_max(family_occurrences, n = 10)
## # A tibble: 12 × 2
##    fml          family_occurrences
##    <chr>                     <int>
##  1 Veneridae                  1593
##  2 Inoceramidae               1193
##  3 Ostreidae                  1153
##  4 Gryphaeidae                1122
##  5 Corbulidae                  991
##  6 Pectinidae                  972
##  7 Cardiidae                   971
##  8 Carditidae                  859
##  9 Lucinidae                   777
## 10 Nuculanidae                 774
## 11 Radiolitidae                774
## 12 Tellinidae                  774

Data quality

Now we can do a more thorough look through the data to check that it’s correct, or at least in the form we expect it to be. Fortunately there is a handy package, CoordinateCleaner, that can help with this. It checks for coordinates that are present in the middle of countries or at (0, 0) — implying they have imprecise, or generic location data — or those occurrences that are spatiotemporal outliers — indicating they may not be correct identifications. Q guide through these checks is here.

Spatial checks

This first step checks that the coordinates are included as numbers and that there aren’t any potential errors — such as matching latitude and longitude values. It’s recommended to also check which record, if any, are flagged by adding value = "flagged" to all commands.

occ_checking <-
  bivalve_pbdb_data %>%
  cc_val(lat = "lat", lon = "lng") %>%
  cc_equ(lat = "lat", lon = "lng")
## Testing equal lat/lon
## Testing coordinate validity
## Removed 0 records.
## Removed 0 records.

Next we check for the location proximity to country centres, indicating imprecision.

occ_precision <-
  occ_checking %>%
  cc_cen(lat = "lat", lon = "lng", value = "flagged")

occ_precision_fl <-
  bivalve_pbdb_data %>%
  filter(!occ_precision)

Then we check whether occurrences are located within the country they are meant to come from. This requires using ISO 3-letter country codes, while the PBDB uses 2-letter codes, so some conversion is needed; it also uses UK while the country codes is GB and GBR.

# Add record for UK -> GBR, AA -> ATA [Antarctica]
cs_ma <- c("GBR", "ATA")
names(cs_ma) <- c("UK", "AA")
occ_checking <-
  occ_checking %>%
  mutate(
    cc_iso3 = countrycode(
        cc2,
        origin = "iso2c",
        destination = "iso3c",
        custom_match = cs_ma
      )
  )

occ_country <-
  occ_checking %>%
  cc_coun(lat = "lat", lon = "lng", iso3 = "cc_iso3", value = "flagged")

occ_country_fl <-
  bivalve_pbdb_data %>%
  filter(!occ_country)

Fourth, is to check against host institutions on the Global Biodiversity Interchange Facility, in case the locations are listed as that rather than the in-the-field locality.

occ_inst <-
  occ_checking %>%
  cc_inst(lat = "lat", lon = "lng", value = "flagged")

occ_gbif <-
  occ_checking %>%
  cc_gbif(lat = "lat", lon = "lng", value = "flagged")

And finally, check for records at (0, 0).

occ_zero_zero <-
  occ_checking %>%
  cc_zero(lat = "lat", lon = "lng", value = "flagged")

Temporal checks

Alongside check that occurrences are not at potentially imprecise/incorrect localities, also see whether any are erroneous separated in time is useful. First removing occurrences without ages.

occ_empty_ages <-
  occ_checking %>%
    filter(
      !is.na(lag),
      !is.na(eag)
    ) %>%
  cf_equal(min_age = "lag", max_age = "eag", value = "flagged")

Next, check on the precision of dating as the very imprecisely dated occurrences can be readily excluded.

bivalve_pbdb_data %>%
  mutate(dating_precision = eag - lag) %>%
  ggplot(aes(dating_precision)) +
    geom_histogram()
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
Histogram of Bivalvia occurrence dating ranges from the Paleobiology Database.

Histogram of Bivalvia occurrence dating ranges from the Paleobiology Database.

We’re mostly doing okay, with precision less than 20 Ma, but some extend all the way up to 140 Ma dates; we don’t want those!CoordinateCleaner also provides a way to clean based on range comparisons between taxa and comparing similarities — excluding occurrences based on the range of differences of dating precision rather than just setting an arbitrary cutoff. But an absolute value can sometimes be useful: in this case using 35 Ma as the length of the Late Cretaceous. If occurrences can’t certainly be dated within that time frame than we can readily exclude them. As a check of how removing these occurrences affects the spread of ranges, we plot the histogram again.

occ_ranges_total <-
  occ_checking %>%
  cf_range(taxon = "", min_age = "lag", max_age = "eag", value = "flagged")
## Warning in cf_range(., taxon = "", min_age = "lag", max_age = "eag", value
## = "flagged"): decimallatitude not found. Using lat instead.
## Warning in cf_range(., taxon = "", min_age = "lag", max_age = "eag", value
## = "flagged"): decimallongitude not found. Using lng instead.
## Testing temporal range outliers on dataset level
## Flagged 979 records.
occ_ranges_taxon <-
  occ_checking %>%
  cf_range(taxon = "tna", min_age = "lag", max_age = "eag", value = "flagged")
## Warning in cf_range(., taxon = "tna", min_age = "lag", max_age = "eag", :
## decimallatitude not found. Using lat instead.
## Warning in cf_range(., taxon = "tna", min_age = "lag", max_age = "eag", :
## decimallongitude not found. Using lng instead.
## Testing temporal range outliers on taxon level
## Flagged 2122 records.
occ_ranges_absolute <-
  occ_checking %>%
  cf_range(
    taxon = "tna",
    min_age = "lag", max_age = "eag",
    method = "time", max_range = 35, value = "flagged"
  )
## Warning in cf_range(., taxon = "tna", min_age = "lag", max_age = "eag", :
## decimallatitude not found. Using lat instead.
## Warning in cf_range(., taxon = "tna", min_age = "lag", max_age = "eag", :
## decimallongitude not found. Using lng instead.
## Warning in cf_range(., taxon = "tna", min_age = "lag", max_age = "eag", :
## Using method = 'time', set 'uniq_loc' to FALSE
## Testing temporal range outliers on taxon level
## Flagged 150 records.
bivalve_pbdb_data %>%
  filter(occ_ranges_total & occ_ranges_taxon & occ_ranges_absolute) %>%
  mutate(dating_precision = eag - lag) %>%
  ggplot(aes(dating_precision)) +
    geom_histogram(bins = 50)
Histogram of cleaned occurrence dating ranges.

Histogram of cleaned occurrence dating ranges.

Most of the occurrences in this data set can be dated within 10 Ma, so that’s good.

Now for checking outliers in time and space — those that are much separated from their main cluster and so may be a misidentification.

# this function exhausted memory, so I don't run it
# occ_outliers_total <-
#   occ_checking %>%
#   cf_outl(
      # taxon = "",
      # lat = "lat", lon = "lng",
      # min_age = "lag", max_age = "eag",
      # value = "flagged"
    # )

# occ_outliers_taxon <-
#   occ_checking %>%
#   cf_outl(
#     taxon = "tna",
#     lat = "lat", lon = "lng",
#     min_age = "lag", max_age = "eag",
#     value = "flagged"
#   )

#swap lat and long over for the flagged occurrences
occ_ids <- c("occ:102732", "occ:102733", "occ:102734", "occ:102735", "occ:102736","occ:102737","occ:102738","occ:102739","occ:102740", "occ:102741", "occ:102742", "occ:102773", "occ:102774", "occ:102775", "occ:102776", "occ:102777", "occ:102778", "occ:102780", "occ:102781", "occ:102782", "occ:102783", "occ:102784", "occ:102785", "occ:102786","occ:102787", "occ:102788", "occ:102789", "occ:102790","occ:102791", "occ:102792","occ:102793", "occ:102794", "occ:143771", "occ:143772", "occ:143773", "occ:143774", "occ:143775", "occ:143776", "occ:143777", "occ:143778", "occ:143779", "occ:143780", "occ:143781", "occ:143782", "occ:143785", "occ:143786", "occ:143787", "occ:143788", "occ:143789", "occ:143792", "occ:143793", "occ:143794", "occ:143795", "occ:143796", "occ:143799", "occ:143800", "occ:143801", "occ:143802", "occ:143803", "occ:143806", "occ:143807", "occ:143808", "occ:143809", "occ:143810", "occ:143813", "occ:143814", "occ:143815", "occ:143816", "occ:143817", "occ:143820", "occ:143821", "occ:143822", "occ:143823", "occ:143824", "occ:143827", "occ:143828", "occ:143829", "occ:143830", "occ:143831", "occ:143834", "occ:143835", "occ:143836", "occ:143837", "occ:143838", "occ:143840", "occ:143841", "occ:143842", "occ:143844", "occ:143845", "occ:143846", "occ:143848", "occ:143849", "occ:143850", "occ:143852", "occ:143853", "occ:143854", "occ:143856", "occ:143857", "occ:143859", "occ:143860", "occ:143862", "occ:143864", "occ:143865", "occ:143866", "occ:143867", "occ:143868", "occ:144716", "occ:144717", "occ:564462", "occ:564493", "occ:564494", "occ:564495", "occ:564593", "occ:564594", "occ:564595", "occ:678968", "occ:678969", "occ:678970", "occ:678971", "occ:678972", "occ:678973", "occ:678974", "occ:678975", "occ:678976", "occ:678977", "occ:678978", "occ:678979", "occ:678980", "occ:678981", "occ:678982", "occ:678983", "occ:678984", "occ:678985", "occ:678986", "occ:678987", "occ:678988", "occ:678989", "occ:678990", "occ:678991", "occ:678992", "occ:678993", "occ:678994", "occ:678995", "occ:678996", "occ:678997", "occ:678998", "occ:678999", "occ:679000", "occ:679001", "occ:679002", "occ:679003", "occ:679004", "occ:679005", "occ:679006", "occ:679007", "occ:679008", "occ:691679", "occ:691680", "occ:691681", "occ:691682", "occ:691683", "occ:691684", "occ:691685", "occ:691691", "occ:692061", "occ:692062", "occ:692063", "occ:692064", "occ:692065", "occ:692066", "occ:692067", "occ:692068", "occ:692069", "occ:692070", "occ:692071", "occ:692072", "occ:692073", "occ:692074", "occ:692075", "occ:692076", "occ:692077", "occ:692078", "occ:692079","occ:692080", "occ:692081", "occ:692082", "occ:692083", "occ:692084", "occ:692085", "occ:692086", "occ:692087", "occ:692088", "occ:692089", "occ:692090", "occ:692091", "occ:1018904", "occ:1018905", "occ:1228468", "occ:1468425", "occ:1468428")
#create string of flagged occurrences  paste0(occ_ids, collapse = "|")
occ_string <- paste0(occ_ids, collapse = "|")

oid_matches <- which(bivalve_pbdb_data$oid %in% occ_ids)

lat <- bivalve_pbdb_data$lat
lng <- bivalve_pbdb_data$lng

lat[oid_matches] <- bivalve_pbdb_data$lng[oid_matches]
lng[oid_matches] <- bivalve_pbdb_data$lat[oid_matches]

data.frame(old_lat = bivalve_pbdb_data$lat, new_lat = lat, old_lng = bivalve_pbdb_data$lng, new_lng = lng) %>% slice(oid_matches)
##      old_lat    new_lat    old_lng  new_lng
## 1   51.51667  -0.083333  -0.083333 51.51667
## 2   51.51667  -0.083333  -0.083333 51.51667
## 3   51.51667  -0.083333  -0.083333 51.51667
## 4   51.51667  -0.083333  -0.083333 51.51667
## 5   51.51667  -0.083333  -0.083333 51.51667
## 6   51.51667  -0.083333  -0.083333 51.51667
## 7   51.51667  -0.083333  -0.083333 51.51667
## 8   51.51667  -0.083333  -0.083333 51.51667
## 9   51.51667  -0.083333  -0.083333 51.51667
## 10  51.51667  -0.083333  -0.083333 51.51667
## 11  51.51667  -0.083333  -0.083333 51.51667
## 12  51.51667  -0.083333  -0.083333 51.51667
## 13  51.51667  -0.083333  -0.083333 51.51667
## 14  51.51667  -0.083333  -0.083333 51.51667
## 15  51.51667  -0.083333  -0.083333 51.51667
## 16  51.51667  -0.083333  -0.083333 51.51667
## 17  51.51667  -0.083333  -0.083333 51.51667
## 18  51.51667  -0.083333  -0.083333 51.51667
## 19  51.51667  -0.083333  -0.083333 51.51667
## 20  51.51667  -0.083333  -0.083333 51.51667
## 21  51.51667  -0.083333  -0.083333 51.51667
## 22  51.51667  -0.083333  -0.083333 51.51667
## 23  51.51667  -0.083333  -0.083333 51.51667
## 24  51.51667  -0.083333  -0.083333 51.51667
## 25  51.51667  -0.083333  -0.083333 51.51667
## 26  51.51667  -0.083333  -0.083333 51.51667
## 27  51.51667  -0.083333  -0.083333 51.51667
## 28  51.51667  -0.083333  -0.083333 51.51667
## 29  51.51667  -0.083333  -0.083333 51.51667
## 30  51.51667  -0.083333  -0.083333 51.51667
## 31  51.51667  -0.083333  -0.083333 51.51667
## 32  51.51667  -0.083333  -0.083333 51.51667
## 33  51.00000   9.000000   9.000000 51.00000
## 34  51.00000   9.000000   9.000000 51.00000
## 35  51.00000   9.000000   9.000000 51.00000
## 36  51.00000   9.000000   9.000000 51.00000
## 37  51.00000   9.000000   9.000000 51.00000
## 38  51.00000   9.000000   9.000000 51.00000
## 39  51.00000   9.000000   9.000000 51.00000
## 40  51.00000   9.000000   9.000000 51.00000
## 41  51.00000   9.000000   9.000000 51.00000
## 42  51.00000   9.000000   9.000000 51.00000
## 43  51.00000   9.000000   9.000000 51.00000
## 44  51.00000   9.000000   9.000000 51.00000
## 45  51.00000   9.000000   9.000000 51.00000
## 46  51.00000   9.000000   9.000000 51.00000
## 47  51.00000   9.000000   9.000000 51.00000
## 48  51.00000   9.000000   9.000000 51.00000
## 49  51.00000   9.000000   9.000000 51.00000
## 50  51.00000   9.000000   9.000000 51.00000
## 51  51.00000   9.000000   9.000000 51.00000
## 52  51.00000   9.000000   9.000000 51.00000
## 53  51.00000   9.000000   9.000000 51.00000
## 54  51.00000   9.000000   9.000000 51.00000
## 55  51.00000   9.000000   9.000000 51.00000
## 56  51.00000   9.000000   9.000000 51.00000
## 57  51.00000   9.000000   9.000000 51.00000
## 58  51.00000   9.000000   9.000000 51.00000
## 59  51.00000   9.000000   9.000000 51.00000
## 60  51.00000   9.000000   9.000000 51.00000
## 61  51.00000   9.000000   9.000000 51.00000
## 62  51.00000   9.000000   9.000000 51.00000
## 63  51.00000   9.000000   9.000000 51.00000
## 64  51.00000   9.000000   9.000000 51.00000
## 65  51.00000   9.000000   9.000000 51.00000
## 66  51.00000   9.000000   9.000000 51.00000
## 67  51.00000   9.000000   9.000000 51.00000
## 68  51.00000   9.000000   9.000000 51.00000
## 69  51.00000   9.000000   9.000000 51.00000
## 70  51.00000   9.000000   9.000000 51.00000
## 71  51.00000   9.000000   9.000000 51.00000
## 72  51.00000   9.000000   9.000000 51.00000
## 73  51.00000   9.000000   9.000000 51.00000
## 74  51.00000   9.000000   9.000000 51.00000
## 75  51.00000   9.000000   9.000000 51.00000
## 76  51.00000   9.000000   9.000000 51.00000
## 77  51.00000   9.000000   9.000000 51.00000
## 78  51.00000   9.000000   9.000000 51.00000
## 79  51.00000   9.000000   9.000000 51.00000
## 80  51.00000   9.000000   9.000000 51.00000
## 81  51.00000   9.000000   9.000000 51.00000
## 82  51.00000   9.000000   9.000000 51.00000
## 83  51.00000   9.000000   9.000000 51.00000
## 84  51.00000   9.000000   9.000000 51.00000
## 85  51.00000   9.000000   9.000000 51.00000
## 86  51.00000   9.000000   9.000000 51.00000
## 87  51.00000   9.000000   9.000000 51.00000
## 88  51.00000   9.000000   9.000000 51.00000
## 89  51.00000   9.000000   9.000000 51.00000
## 90  51.00000   9.000000   9.000000 51.00000
## 91  51.00000   9.000000   9.000000 51.00000
## 92  51.00000   9.000000   9.000000 51.00000
## 93  51.00000   9.000000   9.000000 51.00000
## 94  51.00000   9.000000   9.000000 51.00000
## 95  51.00000   9.000000   9.000000 51.00000
## 96  51.00000   9.000000   9.000000 51.00000
## 97  51.00000   9.000000   9.000000 51.00000
## 98  51.00000   9.000000   9.000000 51.00000
## 99  51.00000   9.000000   9.000000 51.00000
## 100 51.00000   9.000000   9.000000 51.00000
## 101 51.00000   9.000000   9.000000 51.00000
## 102 51.00000   9.000000   9.000000 51.00000
## 103 51.00000   9.000000   9.000000 51.00000
## 104 51.00000   9.000000   9.000000 51.00000
## 105 51.00000   9.000000   9.000000 51.00000
## 106 51.00000   9.000000   9.000000 51.00000
## 107 51.00000   9.000000   9.000000 51.00000
## 108 51.00000   9.000000   9.000000 51.00000
## 109 46.05333   6.519167   6.519167 46.05333
## 110 46.05333   6.519167   6.519167 46.05333
## 111 46.05333   6.519167   6.519167 46.05333
## 112 46.05333   6.519167   6.519167 46.05333
## 113 46.05333   6.519167   6.519167 46.05333
## 114 46.05333   6.519167   6.519167 46.05333
## 115 46.05333   6.519167   6.519167 46.05333
## 116 22.00000 -79.500000 -79.500000 22.00000
## 117 22.00000 -79.500000 -79.500000 22.00000
## 118 22.00000 -79.500000 -79.500000 22.00000
## 119 22.00000 -79.500000 -79.500000 22.00000
## 120 22.00000 -79.500000 -79.500000 22.00000
## 121 22.00000 -79.500000 -79.500000 22.00000
## 122 22.00000 -79.500000 -79.500000 22.00000
## 123 22.00000 -79.500000 -79.500000 22.00000
## 124 22.00000 -79.500000 -79.500000 22.00000
## 125 22.00000 -79.500000 -79.500000 22.00000
## 126 22.00000 -79.500000 -79.500000 22.00000
## 127 22.00000 -79.500000 -79.500000 22.00000
## 128 22.00000 -79.500000 -79.500000 22.00000
## 129 22.00000 -79.500000 -79.500000 22.00000
## 130 22.00000 -79.500000 -79.500000 22.00000
## 131 22.00000 -79.500000 -79.500000 22.00000
## 132 22.00000 -79.500000 -79.500000 22.00000
## 133 22.00000 -79.500000 -79.500000 22.00000
## 134 22.00000 -79.500000 -79.500000 22.00000
## 135 22.00000 -79.500000 -79.500000 22.00000
## 136 22.00000 -79.500000 -79.500000 22.00000
## 137 22.00000 -79.500000 -79.500000 22.00000
## 138 22.00000 -79.500000 -79.500000 22.00000
## 139 22.00000 -79.500000 -79.500000 22.00000
## 140 22.00000 -79.500000 -79.500000 22.00000
## 141 22.00000 -79.500000 -79.500000 22.00000
## 142 22.00000 -79.500000 -79.500000 22.00000
## 143 22.00000 -79.500000 -79.500000 22.00000
## 144 22.00000 -79.500000 -79.500000 22.00000
## 145 22.00000 -79.500000 -79.500000 22.00000
## 146 22.00000 -79.500000 -79.500000 22.00000
## 147 22.00000 -79.500000 -79.500000 22.00000
## 148 22.00000 -79.500000 -79.500000 22.00000
## 149 22.00000 -79.500000 -79.500000 22.00000
## 150 22.00000 -79.500000 -79.500000 22.00000
## 151 22.00000 -79.500000 -79.500000 22.00000
## 152 22.00000 -79.500000 -79.500000 22.00000
## 153 22.00000 -79.500000 -79.500000 22.00000
## 154 22.00000 -79.500000 -79.500000 22.00000
## 155 22.00000 -79.500000 -79.500000 22.00000
## 156 22.00000 -79.500000 -79.500000 22.00000
## 157 40.63333  35.766666  35.766666 40.63333
## 158 40.63333  35.766666  35.766666 40.63333
## 159 40.63333  35.766666  35.766666 40.63333
## 160 40.63333  35.766666  35.766666 40.63333
## 161 40.63333  35.766666  35.766666 40.63333
## 162 40.63333  35.766666  35.766666 40.63333
## 163 40.63333  35.766666  35.766666 40.63333
## 164 40.63333  35.766666  35.766666 40.63333
## 165 43.10000  20.799999  20.799999 43.10000
## 166 43.10000  20.799999  20.799999 43.10000
## 167 43.10000  20.799999  20.799999 43.10000
## 168 43.10000  20.799999  20.799999 43.10000
## 169 43.10000  20.799999  20.799999 43.10000
## 170 43.10000  20.799999  20.799999 43.10000
## 171 43.10000  20.799999  20.799999 43.10000
## 172 43.10000  20.799999  20.799999 43.10000
## 173 43.10000  20.799999  20.799999 43.10000
## 174 43.10000  20.799999  20.799999 43.10000
## 175 43.10000  20.799999  20.799999 43.10000
## 176 43.10000  20.799999  20.799999 43.10000
## 177 43.10000  20.799999  20.799999 43.10000
## 178 43.10000  20.799999  20.799999 43.10000
## 179 43.10000  20.799999  20.799999 43.10000
## 180 43.10000  20.799999  20.799999 43.10000
## 181 43.10000  20.799999  20.799999 43.10000
## 182 43.10000  20.799999  20.799999 43.10000
## 183 43.10000  20.799999  20.799999 43.10000
## 184 43.10000  20.799999  20.799999 43.10000
## 185 43.10000  20.799999  20.799999 43.10000
## 186 43.10000  20.799999  20.799999 43.10000
## 187 43.10000  20.799999  20.799999 43.10000
## 188 43.10000  20.799999  20.799999 43.10000
## 189 43.10000  20.799999  20.799999 43.10000
## 190 43.10000  20.799999  20.799999 43.10000
## 191 43.10000  20.799999  20.799999 43.10000
## 192 43.10000  20.799999  20.799999 43.10000
## 193 43.10000  20.799999  20.799999 43.10000
## 194 43.10000  20.799999  20.799999 43.10000
## 195 43.10000  20.799999  20.799999 43.10000
## 196 44.51667  33.633331  33.633331 44.51667
## 197 44.51667  33.633331  33.633331 44.51667
## 198 40.63333  35.766666  35.766666 40.63333
## 199 13.21579 -59.553047 -59.553047 13.21579
## 200 13.21579 -59.553047 -59.553047 13.21579
bivalve_pbdb_data$lat <- lat
bivalve_pbdb_data$lng <- lng

Excluding questionable data

The above functions let you go through and check the removed occurrences for the reasons and to make sure they should be removed. This code below does all the cleaning automatically using the helper function clean_fossils.

cs_ma <- c(
  "UK" = "GBR",
  "AA" = "ATA"
)
bivalve_pbdb_data <-
  bivalve_pbdb_data %>%
  mutate(
    cc_iso3 = countrycode(cc2,
      origin = "iso2c", destination = "iso3c", custom_match = cs_ma
    )
  )

bivalve_cleaned <-
  bivalve_pbdb_data %>%
  clean_fossils(
    taxon = "tna",
    min_age = "lag", max_age = "eag",
    lon = "lng", lat = "lat",
    countries = "cc_iso3", value = "clean",
    tests = c("agesequal", "centroids", "equal", "gbif", "institutions", "spatiotemp", "validity", "zeros")
  ) %>%
    filter(str_detect(env, "deep-water|basinal|shoreface|reef|offshore|peritidal|subtidal|marine|lagoonal|submarine|coastal|delta|deltaic|foreshore|perireef|prodelta|estuary/bay|crevasse splay|interdistributary"))
## Testing coordinate validity
## Flagged 0 records.
## Testing equal lat/lon
## Flagged 0 records.
## Testing zero coordinates
## Flagged 0 records.
## Testing country centroids
## Flagged 3 records.
## Testing spatio-temporal outliers on taxon level
## Warning in cf_outl(x = x, lon = lon, lat = lat, min_age = min_age, max_age
## = max_age, : decimallatitude not found. Using lat instead.
## Warning in cf_outl(x = x, lon = lon, lat = lat, min_age = min_age, max_age
## = max_age, : decimallongitude not found. Using lng instead.
## Flagged 897 records.
## Testing age validity
## Flagged 0 records.
## Testing GBIF headquarters, flagging records around Copenhagen
## Flagged 5 records.
## Testing biodiversity institutions
## Flagged 0 records.
## Flagged 904 of 74262 records, EQ = 0.01

That last line filters only those occurrences from marine/shelf/oceanic environments, based on the lithology. Have a look through the column and see whether you want to include any other environments; separate them with the vertical bar — |, meaning ‘or’ in regular expressions. The clean_fossils function outputs useful messages to show what stage it’s at; I get some warnings about decimallatitude and decimallongitude, but I don’t think that’s anything to worry about.

Checking taxonomy

A final set of things to check is for names that might have misspellings or missing taxonomy data.

Remove subgenus names

One of the features of many names is including a subgenus name in parentheses. While taxonomically important, this can be problematic as some taxa will include the subgenus, while others may not depending on the taxonomy. We thus remove the subgenus name. At this point, it’s also useful to convert the strings to lowercase to remove any errors from capitalization. Searching and modifying strings in R uses a system ‘regular expressions’: a series of indicators to select certain groups of characters. In the example below, we’re looking for a set of lowercase letters, surrounded by parentheses and followed by a space. Have a look at this cheat sheet for stringr (there are cheat sheets for some other packages to look at here: https://www.rstudio.com/resources/cheatsheets/).

bivalve_cleaned <-
  bivalve_cleaned %>%
  mutate(tna_trimmed = str_remove_all(str_to_lower(tna), "\\(([:lower:]+)\\)\\s*"))

Check spelling differences

Next, we check for spelling differences. Here, we use the distance between strings, in essence the number of characters different, to check whether there are misspelled names. Package stringdist has the function stringdistmatrix that calculates the pairwise distances within a string vector, thus showing the most similarly-spelled taxon names. Using an arbitrary distance cutoff — in this case 4, but string_cutoff can be changed — will show the most similar strings.

str_dist_matrix <-
  bivalve_cleaned %>%
  filter(rnk == 3) %>%
  pull(tna_trimmed) %>%
  unique() %>%
  stringdistmatrix(useNames = "strings", method = "lcs") %>%
  as.matrix()

string_cutoff <- 4

str_indices <-
  tibble(
    pos_n       = which(str_dist_matrix <= string_cutoff & str_dist_matrix > 0),
    row_n       = pos_n %/% dim(str_dist_matrix)[2],
    row_n_fixed = replace(row_n, row_n == 0, dim(str_dist_matrix)[2]) + 1, # need to add 1 to offset mod(1583) = 0
    col_n       = pos_n %%  dim(str_dist_matrix)[1],
    col_n_fixed = replace(col_n, col_n == 0, dim(str_dist_matrix)[1]),
    row         = rownames(str_dist_matrix)[row_n_fixed],
    col         = colnames(str_dist_matrix)[col_n_fixed],
    distance    = str_dist_matrix[pos_n]
  ) %>%
  arrange(distance)
write_csv(str_indices, "./output/similar_spellings.csv")

At this point, we check the names against accepted names in WoRMS, LifeWatch, GBIF, or Treatise on Invertebrate Paleontology. Then, we use a conversion vector to correct these in the data: the incorrect version is before the equals and the corrected version after. Note this output table shows differences both ways (row and column), so each minor difference is shown twice with the names switched.

name_corrections <-
  c(
    "syncyclonema haggi" = "syncyclonema haeggi",
    "calorhadia equalis"= "calorhadia aequalis", "pycnodonta vesicularis"="pycnodonte vesicularis", "leda coelata" = "Saccella taphria", "arca silverdalensis" = "cunearca silverdalensis"
  )

bivalve_cleaned <-
  bivalve_cleaned %>%
  mutate(tna_trimmed = str_replace_all(tna_trimmed, name_corrections))

We now use tna_trimmed as the main taxon name-column.

Check family name validity

We can check what families are in included in the data quite easily but pulling this column out and finding unique records.

bivalve_cleaned %>%
  pull(fml) %>%
  unique()
##   [1] "Nuculidae"           "Nuculanidae"         "Pholadomyidae"      
##   [4] "Pteriidae"           "Pectinidae"          "Lucinidae"          
##   [7] "Carditidae"          "Crassatellidae"      "Mactridae"          
##  [10] "Tellinidae"          "Kelliellidae"        "Veneridae"          
##  [13] "Corbulidae"          "Periplomatidae"      NA                   
##  [16] "Astartidae"          "Semelidae"           "Verticordiidae"     
##  [19] "Yoldiidae"           "Glycymerididae"      "Ungulinidae"        
##  [22] "Pinnidae"            "Limopsidae"          "Malletiidae"        
##  [25] "Parallelodontidae"   "Arcidae"             "Cucullaeidae"       
##  [28] "Mytilidae"           "Inoceramidae"        "Entoliidae"         
##  [31] "Anomiidae"           "Limidae"             "Gryphaeidae"        
##  [34] "Ostreidae"           "Megatrigoniidae"     "Mactromyidae"       
##  [37] "Cardiidae"           "Pharidae"            "Arcticidae"         
##  [40] "Gastrochaenidae"     "Pholadidae"          "Laternulidae"       
##  [43] "Poromyidae"          "Hiatellidae"         "NO_FAMILY_SPECIFIED"
##  [46] "Neitheidae"          "Spondylidae"         "Terquemiidae"       
##  [49] "Dimyidae"            "Flemingostreidae"    "Sareptidae"         
##  [52] "Neilonellidae"       "Propeamussiidae"     "Malleidae"          
##  [55] "Parilimyidae"        "Cuspidariidae"       "Solemyidae"         
##  [58] "Buchiidae"           "Thyasiridae"         "Thraciidae"         
##  [61] "Plicatulidae"        "Bakevelliidae"       "Requieniidae"       
##  [64] "Monopleuridae"       "Radiolitidae"        "Hippuritidae"       
##  [67] "Trigoniidae"         "Pleuromyidae"        "Chamidae"           
##  [70] "Teredinidae"         "Anatinellidae"       "Steinmanellidae"    
##  [73] "Caprinidae"          "Corbiculidae"        "Tancrediidae"       
##  [76] "Solenidae"           "Oxytomidae"          "Icanotiidae"        
##  [79] "Neomiodontidae"      "Ceratomyidae"        "Mulleriidae"        
##  [82] "Ptychomyinae"        "Kalenteridae"        "Donacidae"          
##  [85] "Caprinuloideidae"    "Heteropectinidae"    "Aviculopectinidae"  
##  [88] "Psammobiidae"        "Glossidae"           "Crenellidae"        
##  [91] "Quenstedtiidae"      "Laevitrigoniidae"    "Pulvinitinae"       
##  [94] "Lahillidae"          "Nucinellidae"        "Erycinidae"         
##  [97] "Clavagellidae"       "Cyrenidae"           "Leptonidae"         
## [100] "Condylocardiidae"    "Cardiolariidae"      "Antillocaprinidae"  
## [103] "Pollicidae"          "Dreissenidae"        "Spheniopsidae"      
## [106] "Sportellidae"        "Cardiniidae"         "Solecurtidae"       
## [109] "Trapezidae"          "Kelliidae"           "Unionidae"          
## [112] "Ichthyosarcolitidae" "Galeommatidae"       "Myidae"             
## [115] "Pandoridae"          "Lyonsiidae"          "Plagioptychidae"    
## [118] "Noetiidae"           "Polyconitidae"       "Caprinulidae"       
## [121] "Epidiceratidae"      "Trigonioididae"      "Isoarcidae"         
## [124] "Trechmannellidae"    "Montacutidae"        "Posidoniidae"       
## [127] "Myophorellidae"      "Nakamuranaiadidae"   "Lasaeidae"          
## [130] "Sphaeriidae"         "Mesodesmatidae"      "Raetomyidae"        
## [133] "Philobryidae"        "Petricolina"         "Vesicomyidae"       
## [136] "Manzanellidae"       "Palaeolophidae"      "Diceratidae"        
## [139] "Gaimardiidae"        "Cassianellidae"      "Pergamidiidae"      
## [142] "Hyriidae"            "Myochamidae"         "Chondrodontidae"    
## [145] "Pseudomonotidae"     "Saxicavellidae"      "Margaritariidae"    
## [148] "Euloxidae"           "Isocyprinidae"       "Dicerocardiidae"    
## [151] "Caprotinidae"        "Margaritiferidae"    "Jilinoconchidae"    
## [154] "Nippononaiidae"      "Tindariidae"         "Fusidae"

We see that there are two errant values: “NO_FAMILY_SPECIFIED” and NA.

errant_taxonomy <-
  bivalve_cleaned %>%
  filter(fml == "NO_FAMILY_SPECIFIED" | is.na(fml)) %>%
  select(tna_trimmed, fml, rnk)
print(errant_taxonomy, n = Inf)
## # A tibble: 1,517 × 3
##      tna_trimmed                  fml                   rnk
##      <chr>                        <chr>               <dbl>
##    1 "bivalvia"                   <NA>                   17
##    2 "bivalvia"                   <NA>                   17
##    3 "bivalvia"                   <NA>                   17
##    4 "bivalvia"                   <NA>                   17
##    5 "bivalvia"                   <NA>                   17
##    6 "bivalvia"                   <NA>                   17
##    7 "bivalvia"                   <NA>                   17
##    8 "hypoxytoma"                 NO_FAMILY_SPECIFIED     5
##    9 "entolium membranaceum"      NO_FAMILY_SPECIFIED     3
##   10 "entolium membranaceum"      NO_FAMILY_SPECIFIED     3
##   11 "cnestriella"                NO_FAMILY_SPECIFIED     5
##   12 "entolium membranaceum"      NO_FAMILY_SPECIFIED     3
##   13 "entolium membranaceum"      NO_FAMILY_SPECIFIED     3
##   14 "skwarkoella"                NO_FAMILY_SPECIFIED     5
##   15 "entolium membranaceum"      NO_FAMILY_SPECIFIED     3
##   16 "hypoxytoma"                 NO_FAMILY_SPECIFIED     5
##   17 "bivalvia"                   <NA>                   17
##   18 "bivalvia"                   <NA>                   17
##   19 "bivalvia"                   <NA>                   17
##   20 "bivalvia"                   <NA>                   17
##   21 "bivalvia"                   <NA>                   17
##   22 "bivalvia"                   <NA>                   17
##   23 "bivalvia"                   <NA>                   17
##   24 "bivalvia"                   <NA>                   17
##   25 "bivalvia"                   <NA>                   17
##   26 "bivalvia"                   <NA>                   17
##   27 "bivalvia"                   <NA>                   17
##   28 "bivalvia"                   <NA>                   17
##   29 "bivalvia"                   <NA>                   17
##   30 "bivalvia"                   <NA>                   17
##   31 "bivalvia"                   <NA>                   17
##   32 "bivalvia"                   <NA>                   17
##   33 "bivalvia"                   <NA>                   17
##   34 "bivalvia"                   <NA>                   17
##   35 "bivalvia"                   <NA>                   17
##   36 "bivalvia"                   <NA>                   17
##   37 "bivalvia"                   <NA>                   17
##   38 "bivalvia"                   <NA>                   17
##   39 "bivalvia"                   <NA>                   17
##   40 "bivalvia"                   <NA>                   17
##   41 "bivalvia"                   <NA>                   17
##   42 "bivalvia"                   <NA>                   17
##   43 "bivalvia"                   <NA>                   17
##   44 "bivalvia"                   <NA>                   17
##   45 "bivalvia"                   <NA>                   17
##   46 "bivalvia"                   <NA>                   17
##   47 "bivalvia"                   <NA>                   17
##   48 "bivalvia"                   <NA>                   17
##   49 "entolium orbiculare"        NO_FAMILY_SPECIFIED     3
##   50 "entolium orbiculare"        NO_FAMILY_SPECIFIED     3
##   51 "girardotia"                 NO_FAMILY_SPECIFIED     5
##   52 "entolium orbiculare"        NO_FAMILY_SPECIFIED     3
##   53 "entolium orbiculare"        NO_FAMILY_SPECIFIED     3
##   54 "entolium orbiculare"        NO_FAMILY_SPECIFIED     3
##   55 "entolium orbiculare"        NO_FAMILY_SPECIFIED     3
##   56 "entolium orbiculare"        NO_FAMILY_SPECIFIED     3
##   57 "entolium orbiculare"        NO_FAMILY_SPECIFIED     3
##   58 "entolium orbiculare"        NO_FAMILY_SPECIFIED     3
##   59 "entolium orbiculare"        NO_FAMILY_SPECIFIED     3
##   60 "entolium orbiculare"        NO_FAMILY_SPECIFIED     3
##   61 "entolium orbiculare"        NO_FAMILY_SPECIFIED     3
##   62 "seendia"                    NO_FAMILY_SPECIFIED     5
##   63 "entolium orbiculare"        NO_FAMILY_SPECIFIED     3
##   64 "bivalvia"                   <NA>                   17
##   65 "entolium"                   NO_FAMILY_SPECIFIED     5
##   66 "entolium"                   NO_FAMILY_SPECIFIED     5
##   67 "entolium"                   NO_FAMILY_SPECIFIED     5
##   68 "entolium"                   NO_FAMILY_SPECIFIED     5
##   69 "entolium"                   NO_FAMILY_SPECIFIED     5
##   70 "entolium"                   NO_FAMILY_SPECIFIED     5
##   71 "entolium"                   NO_FAMILY_SPECIFIED     5
##   72 "bivalvia"                   <NA>                   17
##   73 "entolium"                   NO_FAMILY_SPECIFIED     5
##   74 "entolium demissus"          NO_FAMILY_SPECIFIED     3
##   75 "entolium"                   NO_FAMILY_SPECIFIED     5
##   76 "entolium demissus"          NO_FAMILY_SPECIFIED     3
##   77 "entolium"                   NO_FAMILY_SPECIFIED     5
##   78 "entolium"                   NO_FAMILY_SPECIFIED     5
##   79 "entolium"                   NO_FAMILY_SPECIFIED     5
##   80 "entolium demissus"          NO_FAMILY_SPECIFIED     3
##   81 "entolium"                   NO_FAMILY_SPECIFIED     5
##   82 "entolium"                   NO_FAMILY_SPECIFIED     5
##   83 "entolium"                   NO_FAMILY_SPECIFIED     5
##   84 "entolium"                   NO_FAMILY_SPECIFIED     5
##   85 "entolium"                   NO_FAMILY_SPECIFIED     5
##   86 "entolium"                   NO_FAMILY_SPECIFIED     5
##   87 "entolium demissus"          NO_FAMILY_SPECIFIED     3
##   88 "entolium"                   NO_FAMILY_SPECIFIED     5
##   89 "entolium"                   NO_FAMILY_SPECIFIED     5
##   90 "entolium"                   NO_FAMILY_SPECIFIED     5
##   91 "bivalvia"                   <NA>                   17
##   92 "entolium"                   NO_FAMILY_SPECIFIED     5
##   93 "entolium"                   NO_FAMILY_SPECIFIED     5
##   94 "bivalvia"                   <NA>                   17
##   95 "entolium"                   NO_FAMILY_SPECIFIED     5
##   96 "bivalvia"                   <NA>                   17
##   97 "bivalvia"                   <NA>                   17
##   98 "entolium"                   NO_FAMILY_SPECIFIED     5
##   99 "bivalvia"                   <NA>                   17
##  100 "bivalvia"                   <NA>                   17
##  101 "bivalvia"                   <NA>                   17
##  102 "bivalvia"                   <NA>                   17
##  103 "bivalvia"                   <NA>                   17
##  104 "bivalvia"                   <NA>                   17
##  105 "bivalvia"                   <NA>                   17
##  106 "dozyia"                     NO_FAMILY_SPECIFIED     5
##  107 "dozyia"                     NO_FAMILY_SPECIFIED     5
##  108 "entolium"                   NO_FAMILY_SPECIFIED     5
##  109 "dozyia"                     NO_FAMILY_SPECIFIED     5
##  110 "entolium"                   NO_FAMILY_SPECIFIED     5
##  111 "entolium"                   NO_FAMILY_SPECIFIED     5
##  112 "entolium"                   NO_FAMILY_SPECIFIED     5
##  113 "bivalvia"                   <NA>                   17
##  114 "entolium"                   NO_FAMILY_SPECIFIED     5
##  115 "bivalvia"                   <NA>                   17
##  116 "entolium"                   NO_FAMILY_SPECIFIED     5
##  117 "entolium"                   NO_FAMILY_SPECIFIED     5
##  118 "entolium"                   NO_FAMILY_SPECIFIED     5
##  119 "bivalvia"                   <NA>                   17
##  120 "entolium"                   NO_FAMILY_SPECIFIED     5
##  121 "entolium"                   NO_FAMILY_SPECIFIED     5
##  122 "bivalvia"                   <NA>                   17
##  123 "entolium"                   NO_FAMILY_SPECIFIED     5
##  124 "bivalvia"                   <NA>                   17
##  125 "bivalvia"                   <NA>                   17
##  126 "bivalvia"                   <NA>                   17
##  127 "bivalvia"                   <NA>                   17
##  128 "entolium"                   NO_FAMILY_SPECIFIED     5
##  129 "bivalvia"                   <NA>                   17
##  130 "bivalvia"                   <NA>                   17
##  131 "bivalvia"                   <NA>                   17
##  132 "bivalvia"                   <NA>                   17
##  133 "bivalvia"                   <NA>                   17
##  134 "bivalvia"                   <NA>                   17
##  135 "bivalvia"                   <NA>                   17
##  136 "bivalvia"                   <NA>                   17
##  137 "bivalvia"                   <NA>                   17
##  138 "bivalvia"                   <NA>                   17
##  139 "egerella"                   NO_FAMILY_SPECIFIED     5
##  140 "bivalvia"                   <NA>                   17
##  141 "bivalvia"                   <NA>                   17
##  142 "bivalvia"                   <NA>                   17
##  143 "eufistulina"                NO_FAMILY_SPECIFIED     5
##  144 "eufistulina"                NO_FAMILY_SPECIFIED     5
##  145 "eufistulina"                NO_FAMILY_SPECIFIED     5
##  146 "eufistulina"                NO_FAMILY_SPECIFIED     5
##  147 "eufistulina"                NO_FAMILY_SPECIFIED     5
##  148 "eufistulina"                NO_FAMILY_SPECIFIED     5
##  149 "eufistulina"                NO_FAMILY_SPECIFIED     5
##  150 "eufistulina"                NO_FAMILY_SPECIFIED     5
##  151 "bivalvia"                   <NA>                   17
##  152 "bivalvia"                   <NA>                   17
##  153 "eufistulina"                NO_FAMILY_SPECIFIED     5
##  154 "eufistulina"                NO_FAMILY_SPECIFIED     5
##  155 "bivalvia"                   <NA>                   17
##  156 "eufistulina"                NO_FAMILY_SPECIFIED     5
##  157 "eufistulina"                NO_FAMILY_SPECIFIED     5
##  158 "eufistulina"                NO_FAMILY_SPECIFIED     5
##  159 "eufistulina"                NO_FAMILY_SPECIFIED     5
##  160 "eufistulina"                NO_FAMILY_SPECIFIED     5
##  161 "bivalvia"                   <NA>                   17
##  162 "eufistulina"                NO_FAMILY_SPECIFIED     5
##  163 "bivalvia"                   <NA>                   17
##  164 "eufistulina"                NO_FAMILY_SPECIFIED     5
##  165 "eufistulina"                NO_FAMILY_SPECIFIED     5
##  166 "eufistulina"                NO_FAMILY_SPECIFIED     5
##  167 "eufistulina"                NO_FAMILY_SPECIFIED     5
##  168 "eufistulina"                NO_FAMILY_SPECIFIED     5
##  169 "eufistulina"                NO_FAMILY_SPECIFIED     5
##  170 "eufistulina"                NO_FAMILY_SPECIFIED     5
##  171 "eufistulina"                NO_FAMILY_SPECIFIED     5
##  172 "eufistulina"                NO_FAMILY_SPECIFIED     5
##  173 "eufistulina"                NO_FAMILY_SPECIFIED     5
##  174 "eufistulina"                NO_FAMILY_SPECIFIED     5
##  175 "eufistulina"                NO_FAMILY_SPECIFIED     5
##  176 "eufistulina"                NO_FAMILY_SPECIFIED     5
##  177 "eufistulina"                NO_FAMILY_SPECIFIED     5
##  178 "eufistulina"                NO_FAMILY_SPECIFIED     5
##  179 "eufistulina"                NO_FAMILY_SPECIFIED     5
##  180 "bivalvia"                   <NA>                   17
##  181 "bivalvia"                   <NA>                   17
##  182 "bivalvia"                   <NA>                   17
##  183 "arcoidea"                   <NA>                   10
##  184 "arcoidea"                   <NA>                   10
##  185 "arcoidea"                   <NA>                   10
##  186 "arcoidea"                   <NA>                   10
##  187 "arcoidea"                   <NA>                   10
##  188 "entolium"                   NO_FAMILY_SPECIFIED     5
##  189 "entolium"                   NO_FAMILY_SPECIFIED     5
##  190 "veneroidei"                 <NA>                   25
##  191 "veneroidei"                 <NA>                   25
##  192 "veneroidei"                 <NA>                   25
##  193 "veneroidei"                 <NA>                   25
##  194 "veneroidei"                 <NA>                   25
##  195 "veneroidei"                 <NA>                   25
##  196 "veneroidei"                 <NA>                   25
##  197 "veneroidei"                 <NA>                   25
##  198 "cardioidea"                 <NA>                   10
##  199 "nuculoidea"                 <NA>                   10
##  200 "tiza"                       NO_FAMILY_SPECIFIED     5
##  201 "tiza"                       NO_FAMILY_SPECIFIED     5
##  202 "semelina"                   NO_FAMILY_SPECIFIED     5
##  203 "semelina"                   NO_FAMILY_SPECIFIED     5
##  204 "tiza"                       NO_FAMILY_SPECIFIED     5
##  205 "semelina"                   NO_FAMILY_SPECIFIED     5
##  206 "tiza"                       NO_FAMILY_SPECIFIED     5
##  207 "semelina"                   NO_FAMILY_SPECIFIED     5
##  208 "tiza"                       NO_FAMILY_SPECIFIED     5
##  209 "semelina"                   NO_FAMILY_SPECIFIED     5
##  210 "tiza"                       NO_FAMILY_SPECIFIED     5
##  211 "tiza"                       NO_FAMILY_SPECIFIED     5
##  212 "semelina"                   NO_FAMILY_SPECIFIED     5
##  213 "tiza"                       NO_FAMILY_SPECIFIED     5
##  214 "tiza"                       NO_FAMILY_SPECIFIED     5
##  215 "semelina"                   NO_FAMILY_SPECIFIED     5
##  216 "bivalvia"                   <NA>                   17
##  217 "bivalvia"                   <NA>                   17
##  218 "egerella"                   NO_FAMILY_SPECIFIED     5
##  219 "bivalvia"                   <NA>                   17
##  220 "bivalvia"                   <NA>                   17
##  221 "bivalvia"                   <NA>                   17
##  222 "bivalvia"                   <NA>                   17
##  223 "bivalvia"                   <NA>                   17
##  224 "bivalvia"                   <NA>                   17
##  225 "bivalvia"                   <NA>                   17
##  226 "bivalvia"                   <NA>                   17
##  227 "egerella"                   NO_FAMILY_SPECIFIED     5
##  228 "bivalvia"                   <NA>                   17
##  229 "semelina"                   NO_FAMILY_SPECIFIED     5
##  230 "eufistulina"                NO_FAMILY_SPECIFIED     5
##  231 "tenuimactra"                NO_FAMILY_SPECIFIED     5
##  232 "tenuimactra"                NO_FAMILY_SPECIFIED     5
##  233 "sootryenella"               NO_FAMILY_SPECIFIED     5
##  234 "aeora"                      NO_FAMILY_SPECIFIED     5
##  235 "macrosolen"                 NO_FAMILY_SPECIFIED     5
##  236 "macrosolen"                 NO_FAMILY_SPECIFIED     5
##  237 "scrobiculabra"              NO_FAMILY_SPECIFIED     5
##  238 "semimodiola"                NO_FAMILY_SPECIFIED     5
##  239 "tellinocyclas"              NO_FAMILY_SPECIFIED     5
##  240 "scrobiculabra"              NO_FAMILY_SPECIFIED     5
##  241 "semimodiola"                NO_FAMILY_SPECIFIED     5
##  242 "miocardiopsis"              NO_FAMILY_SPECIFIED     5
##  243 "semimodiola"                NO_FAMILY_SPECIFIED     5
##  244 "miocardiopsis"              NO_FAMILY_SPECIFIED     5
##  245 "semimodiola hastata"        NO_FAMILY_SPECIFIED     3
##  246 "fulcrella"                  NO_FAMILY_SPECIFIED     5
##  247 "macrosolen"                 NO_FAMILY_SPECIFIED     5
##  248 "semimodiola hastata"        NO_FAMILY_SPECIFIED     3
##  249 "semimodiola"                NO_FAMILY_SPECIFIED     5
##  250 "laubriereia"                NO_FAMILY_SPECIFIED     5
##  251 "macrosolen"                 NO_FAMILY_SPECIFIED     5
##  252 "bivalvia"                   <NA>                   17
##  253 "ostreidina"                 <NA>                   12
##  254 "bivalvia"                   <NA>                   17
##  255 "ostreidina"                 <NA>                   12
##  256 "bivalvia"                   <NA>                   17
##  257 "recticardo"                 NO_FAMILY_SPECIFIED     5
##  258 "goossensia"                 NO_FAMILY_SPECIFIED     5
##  259 "loparia"                    NO_FAMILY_SPECIFIED     5
##  260 "miocardiopsis"              NO_FAMILY_SPECIFIED     5
##  261 "pholadopsis"                NO_FAMILY_SPECIFIED     5
##  262 "bivalvia"                   <NA>                   17
##  263 "bivalvia"                   <NA>                   17
##  264 "megadiceras"                NO_FAMILY_SPECIFIED     5
##  265 "megadiceras"                NO_FAMILY_SPECIFIED     5
##  266 "bivalvia"                   <NA>                   17
##  267 "bivalvia"                   <NA>                   17
##  268 "hippuritacea"               <NA>                   10
##  269 "hippuritacea"               <NA>                   10
##  270 "bivalvia"                   <NA>                   17
##  271 "bivalvia"                   <NA>                   17
##  272 "recticardo"                 NO_FAMILY_SPECIFIED     5
##  273 "recticardo"                 NO_FAMILY_SPECIFIED     5
##  274 "recticardo"                 NO_FAMILY_SPECIFIED     5
##  275 "recticardo"                 NO_FAMILY_SPECIFIED     5
##  276 "fulcrella"                  NO_FAMILY_SPECIFIED     5
##  277 "divarikellia"               NO_FAMILY_SPECIFIED     5
##  278 "adansonella"                NO_FAMILY_SPECIFIED     5
##  279 "praerangia"                 NO_FAMILY_SPECIFIED     5
##  280 "bivalvia"                   <NA>                   17
##  281 "recticardo"                 NO_FAMILY_SPECIFIED     5
##  282 "recticardo"                 NO_FAMILY_SPECIFIED     5
##  283 "recticardo"                 NO_FAMILY_SPECIFIED     5
##  284 "pholadopsis"                NO_FAMILY_SPECIFIED     5
##  285 "recticardo"                 NO_FAMILY_SPECIFIED     5
##  286 "bivalvia"                   <NA>                   17
##  287 "bivalvia"                   <NA>                   17
##  288 "entolium membranaceum"      NO_FAMILY_SPECIFIED     3
##  289 "entolium membranaceum"      NO_FAMILY_SPECIFIED     3
##  290 "entolium membranaceum"      NO_FAMILY_SPECIFIED     3
##  291 "entolium membranaceum"      NO_FAMILY_SPECIFIED     3
##  292 "bivalvia"                   <NA>                   17
##  293 "bivalvia"                   <NA>                   17
##  294 "bivalvia"                   <NA>                   17
##  295 "bivalvia"                   <NA>                   17
##  296 "hippuritida"                <NA>                   13
##  297 "arcida"                     <NA>                   13
##  298 "entolium membranaceum"      NO_FAMILY_SPECIFIED     3
##  299 "birkelundita"               NO_FAMILY_SPECIFIED     5
##  300 "sita"                       NO_FAMILY_SPECIFIED     5
##  301 "eriphylopsis"               NO_FAMILY_SPECIFIED     5
##  302 "miocardiopsis"              NO_FAMILY_SPECIFIED     5
##  303 "eriphylopsis"               NO_FAMILY_SPECIFIED     5
##  304 "miocardiopsis"              NO_FAMILY_SPECIFIED     5
##  305 "bivalvia"                   <NA>                   17
##  306 "bivalvia"                   <NA>                   17
##  307 "bivalvia"                   <NA>                   17
##  308 "bivalvia"                   <NA>                   17
##  309 "bivalvia"                   <NA>                   17
##  310 "bivalvia"                   <NA>                   17
##  311 "bivalvia"                   <NA>                   17
##  312 "bivalvia"                   <NA>                   17
##  313 "bivalvia"                   <NA>                   17
##  314 "bivalvia"                   <NA>                   17
##  315 "bivalvia"                   <NA>                   17
##  316 "bivalvia"                   <NA>                   17
##  317 "bivalvia"                   <NA>                   17
##  318 "bivalvia"                   <NA>                   17
##  319 "bivalvia"                   <NA>                   17
##  320 "bivalvia"                   <NA>                   17
##  321 "bivalvia"                   <NA>                   17
##  322 "bivalvia"                   <NA>                   17
##  323 "bivalvia"                   <NA>                   17
##  324 "bivalvia"                   <NA>                   17
##  325 "bivalvia"                   <NA>                   17
##  326 "bivalvia"                   <NA>                   17
##  327 "bivalvia"                   <NA>                   17
##  328 "bivalvia"                   <NA>                   17
##  329 "bivalvia"                   <NA>                   17
##  330 "bivalvia"                   <NA>                   17
##  331 "entolium"                   NO_FAMILY_SPECIFIED     5
##  332 "entolium"                   NO_FAMILY_SPECIFIED     5
##  333 "entolium"                   NO_FAMILY_SPECIFIED     5
##  334 "bivalvia"                   <NA>                   17
##  335 "bivalvia"                   <NA>                   17
##  336 "entolium"                   NO_FAMILY_SPECIFIED     5
##  337 "entolium"                   NO_FAMILY_SPECIFIED     5
##  338 "bivalvia"                   <NA>                   17
##  339 "entolium"                   NO_FAMILY_SPECIFIED     5
##  340 "entolium"                   NO_FAMILY_SPECIFIED     5
##  341 "entolium"                   NO_FAMILY_SPECIFIED     5
##  342 "entolium"                   NO_FAMILY_SPECIFIED     5
##  343 "bivalvia"                   <NA>                   17
##  344 "entolium"                   NO_FAMILY_SPECIFIED     5
##  345 "bivalvia"                   <NA>                   17
##  346 "entolium"                   NO_FAMILY_SPECIFIED     5
##  347 "entolium"                   NO_FAMILY_SPECIFIED     5
##  348 "bivalvia"                   <NA>                   17
##  349 "bivalvia"                   <NA>                   17
##  350 "bivalvia"                   <NA>                   17
##  351 "bivalvia"                   <NA>                   17
##  352 "bivalvia"                   <NA>                   17
##  353 "bivalvia"                   <NA>                   17
##  354 "cnestriella"                NO_FAMILY_SPECIFIED     5
##  355 "entolium"                   NO_FAMILY_SPECIFIED     5
##  356 "entolium"                   NO_FAMILY_SPECIFIED     5
##  357 "potamomya"                  NO_FAMILY_SPECIFIED     5
##  358 "potamomya"                  NO_FAMILY_SPECIFIED     5
##  359 "potamomya"                  NO_FAMILY_SPECIFIED     5
##  360 "entolium"                   NO_FAMILY_SPECIFIED     5
##  361 "entolium"                   NO_FAMILY_SPECIFIED     5
##  362 "entolium"                   NO_FAMILY_SPECIFIED     5
##  363 "entolium"                   NO_FAMILY_SPECIFIED     5
##  364 "entolium"                   NO_FAMILY_SPECIFIED     5
##  365 "entolium"                   NO_FAMILY_SPECIFIED     5
##  366 "libitina"                   NO_FAMILY_SPECIFIED     5
##  367 "potamomya"                  NO_FAMILY_SPECIFIED     5
##  368 "ferganoconcha"              NO_FAMILY_SPECIFIED     5
##  369 "hypoxytoma"                 NO_FAMILY_SPECIFIED     5
##  370 "sinodiopsis"                NO_FAMILY_SPECIFIED     5
##  371 "blagraveia"                 NO_FAMILY_SPECIFIED     5
##  372 "blagraveia"                 NO_FAMILY_SPECIFIED     5
##  373 "blagraveia"                 NO_FAMILY_SPECIFIED     5
##  374 "bivalvia"                   <NA>                   17
##  375 "bivalvia"                   <NA>                   17
##  376 "bivalvia"                   <NA>                   17
##  377 "bivalvia"                   <NA>                   17
##  378 "bivalvia"                   <NA>                   17
##  379 "bivalvia"                   <NA>                   17
##  380 "bivalvia"                   <NA>                   17
##  381 "bivalvia"                   <NA>                   17
##  382 "macrosolen"                 NO_FAMILY_SPECIFIED     5
##  383 "bivalvia"                   <NA>                   17
##  384 "bivalvia"                   <NA>                   17
##  385 "lucinoidea"                 <NA>                   10
##  386 "entolium"                   NO_FAMILY_SPECIFIED     5
##  387 "entolium"                   NO_FAMILY_SPECIFIED     5
##  388 "entolium utukokense"        NO_FAMILY_SPECIFIED     3
##  389 "entolium utukokense"        NO_FAMILY_SPECIFIED     3
##  390 "entolium utukokense"        NO_FAMILY_SPECIFIED     3
##  391 "entolium utukokense"        NO_FAMILY_SPECIFIED     3
##  392 "autobranchia"               <NA>                   16
##  393 "bivalvia"                   <NA>                   17
##  394 "bivalvia"                   <NA>                   17
##  395 "bivalvia"                   <NA>                   17
##  396 "nuculoidea"                 <NA>                   10
##  397 "bivalvia"                   <NA>                   17
##  398 "blagraveia"                 NO_FAMILY_SPECIFIED     5
##  399 "blagraveia"                 NO_FAMILY_SPECIFIED     5
##  400 "bivalvia"                   <NA>                   17
##  401 "hippuritida"                <NA>                   13
##  402 "entolium"                   NO_FAMILY_SPECIFIED     5
##  403 "bivalvia"                   <NA>                   17
##  404 "bivalvia"                   <NA>                   17
##  405 "bivalvia"                   <NA>                   17
##  406 "macrosolen"                 NO_FAMILY_SPECIFIED     5
##  407 "pterolucina"                NO_FAMILY_SPECIFIED     5
##  408 "ostreacea"                  <NA>                   10
##  409 "nuculanoidea"               <NA>                   10
##  410 "nuculanoidea"               <NA>                   10
##  411 "entolium"                   NO_FAMILY_SPECIFIED     5
##  412 "entolium"                   NO_FAMILY_SPECIFIED     5
##  413 "entolium"                   NO_FAMILY_SPECIFIED     5
##  414 "entolium"                   NO_FAMILY_SPECIFIED     5
##  415 "entolium"                   NO_FAMILY_SPECIFIED     5
##  416 "bivalvia"                   <NA>                   17
##  417 "bivalvia"                   <NA>                   17
##  418 "bivalvia"                   <NA>                   17
##  419 "hippuritacea"               <NA>                   10
##  420 "stearnsia"                  NO_FAMILY_SPECIFIED     5
##  421 "veneroidei"                 <NA>                   25
##  422 "myoida"                     <NA>                   13
##  423 "veneroidei"                 <NA>                   25
##  424 "myoida"                     <NA>                   13
##  425 "myoida"                     <NA>                   13
##  426 "veneroidei"                 <NA>                   25
##  427 "bivalvia"                   <NA>                   17
##  428 "bivalvia"                   <NA>                   17
##  429 "bivalvia"                   <NA>                   17
##  430 "bivalvia"                   <NA>                   17
##  431 "bivalvia"                   <NA>                   17
##  432 "bivalvia"                   <NA>                   17
##  433 "bivalvia"                   <NA>                   17
##  434 "nuculida"                   <NA>                   13
##  435 "bivalvia"                   <NA>                   17
##  436 "arcoidea"                   <NA>                   10
##  437 "nuculida"                   <NA>                   13
##  438 "arcida"                     <NA>                   13
##  439 "bivalvia"                   <NA>                   17
##  440 "arcida"                     <NA>                   13
##  441 "nuculida"                   <NA>                   13
##  442 "bivalvia"                   <NA>                   17
##  443 "arcida"                     <NA>                   13
##  444 "arcoidea"                   <NA>                   10
##  445 "bivalvia"                   <NA>                   17
##  446 "autobranchia"               <NA>                   16
##  447 "bivalvia"                   <NA>                   17
##  448 "bivalvia"                   <NA>                   17
##  449 "sergipia"                   NO_FAMILY_SPECIFIED     5
##  450 "caspiconcha"                NO_FAMILY_SPECIFIED     5
##  451 "turnus"                     NO_FAMILY_SPECIFIED     5
##  452 "caspiconcha"                NO_FAMILY_SPECIFIED     5
##  453 "caspiconcha"                NO_FAMILY_SPECIFIED     5
##  454 "turnus"                     NO_FAMILY_SPECIFIED     5
##  455 "caspiconcha"                NO_FAMILY_SPECIFIED     5
##  456 "turnus"                     NO_FAMILY_SPECIFIED     5
##  457 "caspiconcha"                NO_FAMILY_SPECIFIED     5
##  458 "caspiconcha"                NO_FAMILY_SPECIFIED     5
##  459 "entolium"                   NO_FAMILY_SPECIFIED     5
##  460 "entolium"                   NO_FAMILY_SPECIFIED     5
##  461 "entolium"                   NO_FAMILY_SPECIFIED     5
##  462 "entolium"                   NO_FAMILY_SPECIFIED     5
##  463 "entolium"                   NO_FAMILY_SPECIFIED     5
##  464 "bivalvia"                   <NA>                   17
##  465 "bivalvia"                   <NA>                   17
##  466 "bivalvia"                   <NA>                   17
##  467 "entolium orbiculare"        NO_FAMILY_SPECIFIED     3
##  468 "bivalvia"                   <NA>                   17
##  469 "bivalvia"                   <NA>                   17
##  470 "bivalvia"                   <NA>                   17
##  471 "bivalvia"                   <NA>                   17
##  472 "bivalvia"                   <NA>                   17
##  473 "girardotia"                 NO_FAMILY_SPECIFIED     5
##  474 "bivalvia"                   <NA>                   17
##  475 "bivalvia"                   <NA>                   17
##  476 "bivalvia"                   <NA>                   17
##  477 "bivalvia"                   <NA>                   17
##  478 "bivalvia"                   <NA>                   17
##  479 "bivalvia"                   <NA>                   17
##  480 "bivalvia"                   <NA>                   17
##  481 "bivalvia"                   <NA>                   17
##  482 "bivalvia"                   <NA>                   17
##  483 "bivalvia"                   <NA>                   17
##  484 "bivalvia"                   <NA>                   17
##  485 "bivalvia"                   <NA>                   17
##  486 "bivalvia"                   <NA>                   17
##  487 "bivalvia"                   <NA>                   17
##  488 "bivalvia"                   <NA>                   17
##  489 "rhedensia"                  NO_FAMILY_SPECIFIED     5
##  490 "bivalvia"                   <NA>                   17
##  491 "bivalvia"                   <NA>                   17
##  492 "bivalvia"                   <NA>                   17
##  493 "cossmannella"               NO_FAMILY_SPECIFIED     5
##  494 "cossmannella"               NO_FAMILY_SPECIFIED     5
##  495 "cossmannella"               NO_FAMILY_SPECIFIED     5
##  496 "bivalvia"                   <NA>                   17
##  497 "blagraveia"                 NO_FAMILY_SPECIFIED     5
##  498 "bivalvia"                   <NA>                   17
##  499 "bivalvia"                   <NA>                   17
##  500 "bivalvia"                   <NA>                   17
##  501 "bivalvia"                   <NA>                   17
##  502 "entolium"                   NO_FAMILY_SPECIFIED     5
##  503 "entolium"                   NO_FAMILY_SPECIFIED     5
##  504 "entolium"                   NO_FAMILY_SPECIFIED     5
##  505 "entolium"                   NO_FAMILY_SPECIFIED     5
##  506 "entolium"                   NO_FAMILY_SPECIFIED     5
##  507 "entolium"                   NO_FAMILY_SPECIFIED     5
##  508 "entolium"                   NO_FAMILY_SPECIFIED     5
##  509 "entolium"                   NO_FAMILY_SPECIFIED     5
##  510 "heterodonta"                <NA>                   16
##  511 "heterodonta"                <NA>                   16
##  512 "heterodonta"                <NA>                   16
##  513 "sergipia"                   NO_FAMILY_SPECIFIED     5
##  514 "euptera zambiensis"         NO_FAMILY_SPECIFIED     3
##  515 "mixtipecten"                NO_FAMILY_SPECIFIED     5
##  516 "mixtipecten"                NO_FAMILY_SPECIFIED     5
##  517 "entolium membranaceum"      NO_FAMILY_SPECIFIED     3
##  518 "eselaevitrigonia"           NO_FAMILY_SPECIFIED     5
##  519 "entolium membranaceum"      NO_FAMILY_SPECIFIED     3
##  520 "entolium"                   NO_FAMILY_SPECIFIED     5
##  521 "entolium"                   NO_FAMILY_SPECIFIED     5
##  522 "dozyia"                     NO_FAMILY_SPECIFIED     5
##  523 "entolium"                   NO_FAMILY_SPECIFIED     5
##  524 "bivalvia"                   <NA>                   17
##  525 "bivalvia"                   <NA>                   17
##  526 "praecaprina"                NO_FAMILY_SPECIFIED     5
##  527 "praecaprina"                NO_FAMILY_SPECIFIED     5
##  528 "heterodonta"                <NA>                   16
##  529 "bivalvia"                   <NA>                   17
##  530 "eselaevitrigonia"           NO_FAMILY_SPECIFIED     5
##  531 "inoceramya"                 NO_FAMILY_SPECIFIED     5
##  532 "sergipia"                   NO_FAMILY_SPECIFIED     5
##  533 "entolium"                   NO_FAMILY_SPECIFIED     5
##  534 "entolium demissus"          NO_FAMILY_SPECIFIED     3
##  535 "entolium demissus"          NO_FAMILY_SPECIFIED     3
##  536 "praecaprina"                NO_FAMILY_SPECIFIED     5
##  537 "arcticlam nanseni"          NO_FAMILY_SPECIFIED     3
##  538 "mytilon theresae"           NO_FAMILY_SPECIFIED     3
##  539 "bivalvia"                   <NA>                   17
##  540 "bivalvia"                   <NA>                   17
##  541 "hippuritacea"               <NA>                   10
##  542 "entolium "                  NO_FAMILY_SPECIFIED     4
##  543 "ostreida"                   <NA>                   13
##  544 "ostreida"                   <NA>                   13
##  545 "ostreida"                   <NA>                   13
##  546 "ostreida"                   <NA>                   13
##  547 "bivalvia"                   <NA>                   17
##  548 "bivalvia"                   <NA>                   17
##  549 "entolium"                   NO_FAMILY_SPECIFIED     5
##  550 "entolium"                   NO_FAMILY_SPECIFIED     5
##  551 "entolium"                   NO_FAMILY_SPECIFIED     5
##  552 "bivalvia"                   <NA>                   17
##  553 "bivalvia"                   <NA>                   17
##  554 "entolium"                   NO_FAMILY_SPECIFIED     5
##  555 "bivalvia"                   <NA>                   17
##  556 "entolium"                   NO_FAMILY_SPECIFIED     5
##  557 "bivalvia"                   <NA>                   17
##  558 "bivalvia"                   <NA>                   17
##  559 "bivalvia"                   <NA>                   17
##  560 "bivalvia"                   <NA>                   17
##  561 "bivalvia"                   <NA>                   17
##  562 "bivalvia"                   <NA>                   17
##  563 "bivalvia"                   <NA>                   17
##  564 "bivalvia"                   <NA>                   17
##  565 "bivalvia"                   <NA>                   17
##  566 "bivalvia"                   <NA>                   17
##  567 "heterodonta"                <NA>                   16
##  568 "heterodonta"                <NA>                   16
##  569 "heterodonta"                <NA>                   16
##  570 "heterodonta"                <NA>                   16
##  571 "entolium"                   NO_FAMILY_SPECIFIED     5
##  572 "entolium"                   NO_FAMILY_SPECIFIED     5
##  573 "heterodonta"                <NA>                   16
##  574 "praeaucellina"              NO_FAMILY_SPECIFIED     5
##  575 "praeaucellina"              NO_FAMILY_SPECIFIED     5
##  576 "entolium"                   NO_FAMILY_SPECIFIED     5
##  577 "entolium"                   NO_FAMILY_SPECIFIED     5
##  578 "entolium"                   NO_FAMILY_SPECIFIED     5
##  579 "entolium membranaceum"      NO_FAMILY_SPECIFIED     3
##  580 "eselaevitrigonia"           NO_FAMILY_SPECIFIED     5
##  581 "tetravaccinites"            NO_FAMILY_SPECIFIED     5
##  582 "pseudopironaea"             NO_FAMILY_SPECIFIED     5
##  583 "entolium"                   NO_FAMILY_SPECIFIED     5
##  584 "entolium"                   NO_FAMILY_SPECIFIED     5
##  585 "pterioida"                  <NA>                   13
##  586 "pterioida"                  <NA>                   13
##  587 "bivalvia"                   <NA>                   17
##  588 "hippuritida"                <NA>                   13
##  589 "hippuritida"                <NA>                   13
##  590 "hippuritida"                <NA>                   13
##  591 "bivalvia"                   <NA>                   17
##  592 "hippuritida"                <NA>                   13
##  593 "entolium"                   NO_FAMILY_SPECIFIED     5
##  594 "entolium"                   NO_FAMILY_SPECIFIED     5
##  595 "bivalvia"                   <NA>                   17
##  596 "hippuritida"                <NA>                   13
##  597 "bivalvia"                   <NA>                   17
##  598 "bivalvia"                   <NA>                   17
##  599 "entolium orbiculare"        NO_FAMILY_SPECIFIED     3
##  600 "entolium orbiculare"        NO_FAMILY_SPECIFIED     3
##  601 "entolium orbiculare"        NO_FAMILY_SPECIFIED     3
##  602 "entolium orbiculare"        NO_FAMILY_SPECIFIED     3
##  603 "bivalvia"                   <NA>                   17
##  604 "bivalvia"                   <NA>                   17
##  605 "bivalvia"                   <NA>                   17
##  606 "bivalvia"                   <NA>                   17
##  607 "paramusculus"               NO_FAMILY_SPECIFIED     5
##  608 "mancosinodia"               NO_FAMILY_SPECIFIED     5
##  609 "bivalvia"                   <NA>                   17
##  610 "hippuritida"                <NA>                   13
##  611 "laubriereia"                NO_FAMILY_SPECIFIED     5
##  612 "phaxas"                     NO_FAMILY_SPECIFIED     5
##  613 "phaxas"                     NO_FAMILY_SPECIFIED     5
##  614 "joannisiella"               NO_FAMILY_SPECIFIED     5
##  615 "joannisiella"               NO_FAMILY_SPECIFIED     5
##  616 "phaxas"                     NO_FAMILY_SPECIFIED     5
##  617 "cardioidea"                 <NA>                   10
##  618 "pectinoidea"                <NA>                   10
##  619 "bivalvia"                   <NA>                   17
##  620 "bivalvia"                   <NA>                   17
##  621 "bivalvia"                   <NA>                   17
##  622 "bivalvia"                   <NA>                   17
##  623 "bivalvia"                   <NA>                   17
##  624 "bivalvia"                   <NA>                   17
##  625 "bivalvia"                   <NA>                   17
##  626 "bivalvia"                   <NA>                   17
##  627 "bivalvia"                   <NA>                   17
##  628 "bivalvia"                   <NA>                   17
##  629 "hippuritida"                <NA>                   13
##  630 "bivalvia"                   <NA>                   17
##  631 "bivalvia"                   <NA>                   17
##  632 "hippuritida"                <NA>                   13
##  633 "bivalvia"                   <NA>                   17
##  634 "bivalvia"                   <NA>                   17
##  635 "bivalvia"                   <NA>                   17
##  636 "hippuritida"                <NA>                   13
##  637 "entolium membranaceum"      NO_FAMILY_SPECIFIED     3
##  638 "bivalvia"                   <NA>                   17
##  639 "entolium membranaceum"      NO_FAMILY_SPECIFIED     3
##  640 "bivalvia"                   <NA>                   17
##  641 "nuculida"                   <NA>                   13
##  642 "bivalvia"                   <NA>                   17
##  643 "nuculida"                   <NA>                   13
##  644 "bivalvia"                   <NA>                   17
##  645 "nuculida"                   <NA>                   13
##  646 "bivalvia"                   <NA>                   17
##  647 "nuculida"                   <NA>                   13
##  648 "disparilia"                 NO_FAMILY_SPECIFIED     5
##  649 "nuculida"                   <NA>                   13
##  650 "disparilia"                 NO_FAMILY_SPECIFIED     5
##  651 "heterodonta"                <NA>                   16
##  652 "disparilia"                 NO_FAMILY_SPECIFIED     5
##  653 "bivalvia"                   <NA>                   17
##  654 "disparilia"                 NO_FAMILY_SPECIFIED     5
##  655 "disparilia"                 NO_FAMILY_SPECIFIED     5
##  656 "disparilia"                 NO_FAMILY_SPECIFIED     5
##  657 "heterodonta"                <NA>                   16
##  658 "bivalvia"                   <NA>                   17
##  659 "disparilia"                 NO_FAMILY_SPECIFIED     5
##  660 "bivalvia"                   <NA>                   17
##  661 "disparilia"                 NO_FAMILY_SPECIFIED     5
##  662 "heterodonta"                <NA>                   16
##  663 "bivalvia"                   <NA>                   17
##  664 "bivalvia"                   <NA>                   17
##  665 "nuculida"                   <NA>                   13
##  666 "disparilia"                 NO_FAMILY_SPECIFIED     5
##  667 "heterodonta"                <NA>                   16
##  668 "bivalvia"                   <NA>                   17
##  669 "disparilia"                 NO_FAMILY_SPECIFIED     5
##  670 "heterodonta"                <NA>                   16
##  671 "disparilia"                 NO_FAMILY_SPECIFIED     5
##  672 "nuculida"                   <NA>                   13
##  673 "disparilia"                 NO_FAMILY_SPECIFIED     5
##  674 "heterodonta"                <NA>                   16
##  675 "bivalvia"                   <NA>                   17
##  676 "disparilia"                 NO_FAMILY_SPECIFIED     5
##  677 "heterodonta"                <NA>                   16
##  678 "bivalvia"                   <NA>                   17
##  679 "disparilia"                 NO_FAMILY_SPECIFIED     5
##  680 "heterodonta"                <NA>                   16
##  681 "bivalvia"                   <NA>                   17
##  682 "nuculida"                   <NA>                   13
##  683 "disparilia"                 NO_FAMILY_SPECIFIED     5
##  684 "bivalvia"                   <NA>                   17
##  685 "nuculida"                   <NA>                   13
##  686 "disparilia"                 NO_FAMILY_SPECIFIED     5
##  687 "nuculida"                   <NA>                   13
##  688 "bivalvia"                   <NA>                   17
##  689 "disparilia"                 NO_FAMILY_SPECIFIED     5
##  690 "bivalvia"                   <NA>                   17
##  691 "disparilia"                 NO_FAMILY_SPECIFIED     5
##  692 "bivalvia"                   <NA>                   17
##  693 "disparilia"                 NO_FAMILY_SPECIFIED     5
##  694 "bivalvia"                   <NA>                   17
##  695 "bivalvia"                   <NA>                   17
##  696 "disparilia"                 NO_FAMILY_SPECIFIED     5
##  697 "disparilia"                 NO_FAMILY_SPECIFIED     5
##  698 "nuculida"                   <NA>                   13
##  699 "disparilia"                 NO_FAMILY_SPECIFIED     5
##  700 "bivalvia"                   <NA>                   17
##  701 "entolium membranaceum"      NO_FAMILY_SPECIFIED     3
##  702 "bivalvia"                   <NA>                   17
##  703 "bivalvia"                   <NA>                   17
##  704 "disparilia"                 NO_FAMILY_SPECIFIED     5
##  705 "bivalvia"                   <NA>                   17
##  706 "bivalvia"                   <NA>                   17
##  707 "bivalvia"                   <NA>                   17
##  708 "entolium membranaceum"      NO_FAMILY_SPECIFIED     3
##  709 "disparilia"                 NO_FAMILY_SPECIFIED     5
##  710 "bivalvia"                   <NA>                   17
##  711 "entolium membranaceum"      NO_FAMILY_SPECIFIED     3
##  712 "disparilia"                 NO_FAMILY_SPECIFIED     5
##  713 "entolium membranaceum"      NO_FAMILY_SPECIFIED     3
##  714 "protagelus"                 NO_FAMILY_SPECIFIED     5
##  715 "bivalvia"                   <NA>                   17
##  716 "entolium membranaceum"      NO_FAMILY_SPECIFIED     3
##  717 "entolium membranaceum"      NO_FAMILY_SPECIFIED     3
##  718 "bivalvia"                   <NA>                   17
##  719 "entolium membranaceum"      NO_FAMILY_SPECIFIED     3
##  720 "bivalvia"                   <NA>                   17
##  721 "entolium membranaceum"      NO_FAMILY_SPECIFIED     3
##  722 "disparilia"                 NO_FAMILY_SPECIFIED     5
##  723 "bivalvia"                   <NA>                   17
##  724 "entolium membranaceum"      NO_FAMILY_SPECIFIED     3
##  725 "disparilia"                 NO_FAMILY_SPECIFIED     5
##  726 "entolium membranaceum"      NO_FAMILY_SPECIFIED     3
##  727 "entolium membranaceum"      NO_FAMILY_SPECIFIED     3
##  728 "protagelus"                 NO_FAMILY_SPECIFIED     5
##  729 "bivalvia"                   <NA>                   17
##  730 "entolium membranaceum"      NO_FAMILY_SPECIFIED     3
##  731 "entolium membranaceum"      NO_FAMILY_SPECIFIED     3
##  732 "bivalvia"                   <NA>                   17
##  733 "entolium membranaceum"      NO_FAMILY_SPECIFIED     3
##  734 "disparilia"                 NO_FAMILY_SPECIFIED     5
##  735 "bivalvia"                   <NA>                   17
##  736 "entolium membranaceum"      NO_FAMILY_SPECIFIED     3
##  737 "bivalvia"                   <NA>                   17
##  738 "bivalvia"                   <NA>                   17
##  739 "bivalvia"                   <NA>                   17
##  740 "bivalvia"                   <NA>                   17
##  741 "bivalvia"                   <NA>                   17
##  742 "mixtipecten"                NO_FAMILY_SPECIFIED     5
##  743 "bivalvia"                   <NA>                   17
##  744 "mixtipecten"                NO_FAMILY_SPECIFIED     5
##  745 "bivalvia"                   <NA>                   17
##  746 "bivalvia"                   <NA>                   17
##  747 "bivalvia"                   <NA>                   17
##  748 "bivalvia"                   <NA>                   17
##  749 "bivalvia"                   <NA>                   17
##  750 "bivalvia"                   <NA>                   17
##  751 "bivalvia"                   <NA>                   17
##  752 "disparilia"                 NO_FAMILY_SPECIFIED     5
##  753 "bivalvia"                   <NA>                   17
##  754 "disparilia"                 NO_FAMILY_SPECIFIED     5
##  755 "bivalvia"                   <NA>                   17
##  756 "bivalvia"                   <NA>                   17
##  757 "bivalvia"                   <NA>                   17
##  758 "bivalvia"                   <NA>                   17
##  759 "entolium membranaceum"      NO_FAMILY_SPECIFIED     3
##  760 "heterodonta"                <NA>                   16
##  761 "bivalvia"                   <NA>                   17
##  762 "disparilia"                 NO_FAMILY_SPECIFIED     5
##  763 "heterodonta"                <NA>                   16
##  764 "bivalvia"                   <NA>                   17
##  765 "heterodonta"                <NA>                   16
##  766 "bivalvia"                   <NA>                   17
##  767 "bivalvia"                   <NA>                   17
##  768 "disparilia"                 NO_FAMILY_SPECIFIED     5
##  769 "heterodonta"                <NA>                   16
##  770 "bivalvia"                   <NA>                   17
##  771 "disparilia"                 NO_FAMILY_SPECIFIED     5
##  772 "bivalvia"                   <NA>                   17
##  773 "bivalvia"                   <NA>                   17
##  774 "bivalvia"                   <NA>                   17
##  775 "disparilia"                 NO_FAMILY_SPECIFIED     5
##  776 "bivalvia"                   <NA>                   17
##  777 "bivalvia"                   <NA>                   17
##  778 "entolium membranaceum"      NO_FAMILY_SPECIFIED     3
##  779 "disparilia"                 NO_FAMILY_SPECIFIED     5
##  780 "bivalvia"                   <NA>                   17
##  781 "disparilia"                 NO_FAMILY_SPECIFIED     5
##  782 "bivalvia"                   <NA>                   17
##  783 "disparilia"                 NO_FAMILY_SPECIFIED     5
##  784 "bivalvia"                   <NA>                   17
##  785 "disparilia"                 NO_FAMILY_SPECIFIED     5
##  786 "protagelus"                 NO_FAMILY_SPECIFIED     5
##  787 "bivalvia"                   <NA>                   17
##  788 "ostreoidea"                 <NA>                   10
##  789 "disparilia"                 NO_FAMILY_SPECIFIED     5
##  790 "protagelus"                 NO_FAMILY_SPECIFIED     5
##  791 "bivalvia"                   <NA>                   17
##  792 "ostreoidea"                 <NA>                   10
##  793 "disparilia"                 NO_FAMILY_SPECIFIED     5
##  794 "protagelus"                 NO_FAMILY_SPECIFIED     5
##  795 "bivalvia"                   <NA>                   17
##  796 "ostreoidea"                 <NA>                   10
##  797 "bivalvia"                   <NA>                   17
##  798 "ostreoidea"                 <NA>                   10
##  799 "disparilia"                 NO_FAMILY_SPECIFIED     5
##  800 "bivalvia"                   <NA>                   17
##  801 "trigoniida"                 <NA>                   13
##  802 "bivalvia"                   <NA>                   17
##  803 "nuculida"                   <NA>                   13
##  804 "bivalvia"                   <NA>                   17
##  805 "nuculida"                   <NA>                   13
##  806 "disparilia"                 NO_FAMILY_SPECIFIED     5
##  807 "bivalvia"                   <NA>                   17
##  808 "disparilia"                 NO_FAMILY_SPECIFIED     5
##  809 "bivalvia"                   <NA>                   17
##  810 "ostreoidea"                 <NA>                   10
##  811 "disparilia"                 NO_FAMILY_SPECIFIED     5
##  812 "bivalvia"                   <NA>                   17
##  813 "bivalvia"                   <NA>                   17
##  814 "bivalvia"                   <NA>                   17
##  815 "ostreoidea"                 <NA>                   10
##  816 "bivalvia"                   <NA>                   17
##  817 "bivalvia"                   <NA>                   17
##  818 "disparilia"                 NO_FAMILY_SPECIFIED     5
##  819 "nuculida"                   <NA>                   13
##  820 "ostreoidea"                 <NA>                   10
##  821 "disparilia"                 NO_FAMILY_SPECIFIED     5
##  822 "bivalvia"                   <NA>                   17
##  823 "bivalvia"                   <NA>                   17
##  824 "bivalvia"                   <NA>                   17
##  825 "bivalvia"                   <NA>                   17
##  826 "ostreoidea"                 <NA>                   10
##  827 "bivalvia"                   <NA>                   17
##  828 "nuculida"                   <NA>                   13
##  829 "bivalvia"                   <NA>                   17
##  830 "ostreoidea"                 <NA>                   10
##  831 "carditacea"                 <NA>                   10
##  832 "protagelus"                 NO_FAMILY_SPECIFIED     5
##  833 "bivalvia"                   <NA>                   17
##  834 "nuculida"                   <NA>                   13
##  835 "disparilia"                 NO_FAMILY_SPECIFIED     5
##  836 "protagelus"                 NO_FAMILY_SPECIFIED     5
##  837 "bivalvia"                   <NA>                   17
##  838 "disparilia"                 NO_FAMILY_SPECIFIED     5
##  839 "bivalvia"                   <NA>                   17
##  840 "ostreoidea"                 <NA>                   10
##  841 "disparilia"                 NO_FAMILY_SPECIFIED     5
##  842 "bivalvia"                   <NA>                   17
##  843 "disparilia"                 NO_FAMILY_SPECIFIED     5
##  844 "bivalvia"                   <NA>                   17
##  845 "disparilia"                 NO_FAMILY_SPECIFIED     5
##  846 "bivalvia"                   <NA>                   17
##  847 "protagelus"                 NO_FAMILY_SPECIFIED     5
##  848 "ostreoidea"                 <NA>                   10
##  849 "bivalvia"                   <NA>                   17
##  850 "disparilia"                 NO_FAMILY_SPECIFIED     5
##  851 "ostreoidea"                 <NA>                   10
##  852 "bivalvia"                   <NA>                   17
##  853 "bivalvia"                   <NA>                   17
##  854 "bivalvia"                   <NA>                   17
##  855 "nuculida"                   <NA>                   13
##  856 "heterodonta"                <NA>                   16
##  857 "protagelus"                 NO_FAMILY_SPECIFIED     5
##  858 "bivalvia"                   <NA>                   17
##  859 "protagelus"                 NO_FAMILY_SPECIFIED     5
##  860 "bivalvia"                   <NA>                   17
##  861 "protagelus"                 NO_FAMILY_SPECIFIED     5
##  862 "bivalvia"                   <NA>                   17
##  863 "protagelus"                 NO_FAMILY_SPECIFIED     5
##  864 "bivalvia"                   <NA>                   17
##  865 "ostreoidea"                 <NA>                   10
##  866 "protagelus"                 NO_FAMILY_SPECIFIED     5
##  867 "bivalvia"                   <NA>                   17
##  868 "protagelus"                 NO_FAMILY_SPECIFIED     5
##  869 "cardioidea"                 <NA>                   10
##  870 "protagelus"                 NO_FAMILY_SPECIFIED     5
##  871 "bivalvia"                   <NA>                   17
##  872 "cardioidea"                 <NA>                   10
##  873 "protagelus"                 NO_FAMILY_SPECIFIED     5
##  874 "bivalvia"                   <NA>                   17
##  875 "bivalvia"                   <NA>                   17
##  876 "ostreoidea"                 <NA>                   10
##  877 "protagelus"                 NO_FAMILY_SPECIFIED     5
##  878 "protagelus"                 NO_FAMILY_SPECIFIED     5
##  879 "bivalvia"                   <NA>                   17
##  880 "cardioidea"                 <NA>                   10
##  881 "bivalvia"                   <NA>                   17
##  882 "bivalvia"                   <NA>                   17
##  883 "bivalvia"                   <NA>                   17
##  884 "bivalvia"                   <NA>                   17
##  885 "protagelus"                 NO_FAMILY_SPECIFIED     5
##  886 "bivalvia"                   <NA>                   17
##  887 "ostreoidea"                 <NA>                   10
##  888 "bivalvia"                   <NA>                   17
##  889 "ostreoidea"                 <NA>                   10
##  890 "bivalvia"                   <NA>                   17
##  891 "protagelus"                 NO_FAMILY_SPECIFIED     5
##  892 "bivalvia"                   <NA>                   17
##  893 "bivalvia"                   <NA>                   17
##  894 "bivalvia"                   <NA>                   17
##  895 "heterodonta"                <NA>                   16
##  896 "bivalvia"                   <NA>                   17
##  897 "bivalvia"                   <NA>                   17
##  898 "ostreoidea"                 <NA>                   10
##  899 "bivalvia"                   <NA>                   17
##  900 "bivalvia"                   <NA>                   17
##  901 "heterodonta"                <NA>                   16
##  902 "bivalvia"                   <NA>                   17
##  903 "bivalvia"                   <NA>                   17
##  904 "heterodonta"                <NA>                   16
##  905 "bivalvia"                   <NA>                   17
##  906 "bivalvia"                   <NA>                   17
##  907 "bivalvia"                   <NA>                   17
##  908 "bivalvia"                   <NA>                   17
##  909 "bivalvia"                   <NA>                   17
##  910 "bivalvia"                   <NA>                   17
##  911 "bivalvia"                   <NA>                   17
##  912 "bivalvia"                   <NA>                   17
##  913 "bivalvia"                   <NA>                   17
##  914 "bivalvia"                   <NA>                   17
##  915 "bivalvia"                   <NA>                   17
##  916 "bivalvia"                   <NA>                   17
##  917 "bivalvia"                   <NA>                   17
##  918 "ostreoidea"                 <NA>                   10
##  919 "bivalvia"                   <NA>                   17
##  920 "bivalvia"                   <NA>                   17
##  921 "bivalvia"                   <NA>                   17
##  922 "bivalvia"                   <NA>                   17
##  923 "bivalvia"                   <NA>                   17
##  924 "bivalvia"                   <NA>                   17
##  925 "ostreoidea"                 <NA>                   10
##  926 "bivalvia"                   <NA>                   17
##  927 "bivalvia"                   <NA>                   17
##  928 "bivalvia"                   <NA>                   17
##  929 "bivalvia"                   <NA>                   17
##  930 "bivalvia"                   <NA>                   17
##  931 "bivalvia"                   <NA>                   17
##  932 "bivalvia"                   <NA>                   17
##  933 "nuculida"                   <NA>                   13
##  934 "bivalvia"                   <NA>                   17
##  935 "bivalvia"                   <NA>                   17
##  936 "bivalvia"                   <NA>                   17
##  937 "bivalvia"                   <NA>                   17
##  938 "bivalvia"                   <NA>                   17
##  939 "bivalvia"                   <NA>                   17
##  940 "bivalvia"                   <NA>                   17
##  941 "protagelus"                 NO_FAMILY_SPECIFIED     5
##  942 "bivalvia"                   <NA>                   17
##  943 "bivalvia"                   <NA>                   17
##  944 "bivalvia"                   <NA>                   17
##  945 "bivalvia"                   <NA>                   17
##  946 "cardioidea"                 <NA>                   10
##  947 "protagelus"                 NO_FAMILY_SPECIFIED     5
##  948 "bivalvia"                   <NA>                   17
##  949 "hatayia"                    NO_FAMILY_SPECIFIED     5
##  950 "branislavia"                NO_FAMILY_SPECIFIED     5
##  951 "veneroidei"                 <NA>                   25
##  952 "veneroidei"                 <NA>                   25
##  953 "veneroidei"                 <NA>                   25
##  954 "pterioida"                  <NA>                   13
##  955 "veneroidei"                 <NA>                   25
##  956 "veneroidei"                 <NA>                   25
##  957 "veneroidei"                 <NA>                   25
##  958 "veneroidei"                 <NA>                   25
##  959 "veneroidei"                 <NA>                   25
##  960 "veneroidei"                 <NA>                   25
##  961 "veneroidei"                 <NA>                   25
##  962 "veneroidei"                 <NA>                   25
##  963 "veneroidei"                 <NA>                   25
##  964 "veneroidei"                 <NA>                   25
##  965 "lucinoidea"                 <NA>                   10
##  966 "lucinoidea"                 <NA>                   10
##  967 "veneroidei"                 <NA>                   25
##  968 "veneroidei"                 <NA>                   25
##  969 "veneroidei"                 <NA>                   25
##  970 "veneroidei"                 <NA>                   25
##  971 "pterioida"                  <NA>                   13
##  972 "veneroidei"                 <NA>                   25
##  973 "veneroidei"                 <NA>                   25
##  974 "lucinoidea"                 <NA>                   10
##  975 "veneroidei"                 <NA>                   25
##  976 "veneroidei"                 <NA>                   25
##  977 "pterioida"                  <NA>                   13
##  978 "veneroidei"                 <NA>                   25
##  979 "veneroidei"                 <NA>                   25
##  980 "veneroidei"                 <NA>                   25
##  981 "veneroidei"                 <NA>                   25
##  982 "veneroidei"                 <NA>                   25
##  983 "pterioida"                  <NA>                   13
##  984 "lucinoidea"                 <NA>                   10
##  985 "veneroidei"                 <NA>                   25
##  986 "lucinoidea"                 <NA>                   10
##  987 "veneroidei"                 <NA>                   25
##  988 "veneroidei"                 <NA>                   25
##  989 "veneroidei"                 <NA>                   25
##  990 "veneroidei"                 <NA>                   25
##  991 "veneroidei"                 <NA>                   25
##  992 "pterioida"                  <NA>                   13
##  993 "veneroidei"                 <NA>                   25
##  994 "bivalvia"                   <NA>                   17
##  995 "bivalvia"                   <NA>                   17
##  996 "bivalvia"                   <NA>                   17
##  997 "bivalvia"                   <NA>                   17
##  998 "bivalvia"                   <NA>                   17
##  999 "macrosolen cyclopeus"       NO_FAMILY_SPECIFIED     3
## 1000 "isocrassina henckeliusiana" NO_FAMILY_SPECIFIED     3
## 1001 "eomeretrix"                 NO_FAMILY_SPECIFIED     5
## 1002 "eomeretrix"                 NO_FAMILY_SPECIFIED     5
## 1003 "eomeretrix"                 NO_FAMILY_SPECIFIED     5
## 1004 "sokolowia"                  NO_FAMILY_SPECIFIED     5
## 1005 "kokanostrea"                NO_FAMILY_SPECIFIED     5
## 1006 "sokolowia"                  NO_FAMILY_SPECIFIED     5
## 1007 "platygena"                  NO_FAMILY_SPECIFIED     5
## 1008 "sokolowia"                  NO_FAMILY_SPECIFIED     5
## 1009 "mixtipecten"                NO_FAMILY_SPECIFIED     5
## 1010 "mixtipecten"                NO_FAMILY_SPECIFIED     5
## 1011 "mixtipecten"                NO_FAMILY_SPECIFIED     5
## 1012 "entolium membranaceum"      NO_FAMILY_SPECIFIED     3
## 1013 "mixtipecten"                NO_FAMILY_SPECIFIED     5
## 1014 "entolium membranaceum"      NO_FAMILY_SPECIFIED     3
## 1015 "mixtipecten"                NO_FAMILY_SPECIFIED     5
## 1016 "entolium membranaceum"      NO_FAMILY_SPECIFIED     3
## 1017 "mixtipecten"                NO_FAMILY_SPECIFIED     5
## 1018 "mixtipecten"                NO_FAMILY_SPECIFIED     5
## 1019 "entolium membranaceum"      NO_FAMILY_SPECIFIED     3
## 1020 "entolium membranaceum"      NO_FAMILY_SPECIFIED     3
## 1021 "mixtipecten"                NO_FAMILY_SPECIFIED     5
## 1022 "entolium membranaceum"      NO_FAMILY_SPECIFIED     3
## 1023 "entolium membranaceum"      NO_FAMILY_SPECIFIED     3
## 1024 "entolium membranaceum"      NO_FAMILY_SPECIFIED     3
## 1025 "mixtipecten"                NO_FAMILY_SPECIFIED     5
## 1026 "mixtipecten"                NO_FAMILY_SPECIFIED     5
## 1027 "entolium membranaceum"      NO_FAMILY_SPECIFIED     3
## 1028 "mixtipecten"                NO_FAMILY_SPECIFIED     5
## 1029 "pterolucina"                NO_FAMILY_SPECIFIED     5
## 1030 "chattonia"                  NO_FAMILY_SPECIFIED     5
## 1031 "entolium orbiculare"        NO_FAMILY_SPECIFIED     3
## 1032 "pterolucina consobrina"     NO_FAMILY_SPECIFIED     3
## 1033 "sita"                       NO_FAMILY_SPECIFIED     5
## 1034 "sita"                       NO_FAMILY_SPECIFIED     5
## 1035 "sita"                       NO_FAMILY_SPECIFIED     5
## 1036 "phaxas"                     NO_FAMILY_SPECIFIED     5
## 1037 "macrosolen"                 NO_FAMILY_SPECIFIED     5
## 1038 "entolium"                   NO_FAMILY_SPECIFIED     5
## 1039 "blagraveia"                 NO_FAMILY_SPECIFIED     5
## 1040 "entolium"                   NO_FAMILY_SPECIFIED     5
## 1041 "entolium"                   NO_FAMILY_SPECIFIED     5
## 1042 "entolium"                   NO_FAMILY_SPECIFIED     5
## 1043 "macrosolen"                 NO_FAMILY_SPECIFIED     5
## 1044 "veneroidei"                 <NA>                   25
## 1045 "veneroidei"                 <NA>                   25
## 1046 "bivalvia"                   <NA>                   17
## 1047 "bivalvia"                   <NA>                   17
## 1048 "arcida"                     <NA>                   13
## 1049 "entolium"                   NO_FAMILY_SPECIFIED     5
## 1050 "entolium"                   NO_FAMILY_SPECIFIED     5
## 1051 "egerella"                   NO_FAMILY_SPECIFIED     5
## 1052 "bivalvia"                   <NA>                   17
## 1053 "bivalvia"                   <NA>                   17
## 1054 "bivalvia"                   <NA>                   17
## 1055 "entolium"                   NO_FAMILY_SPECIFIED     5
## 1056 "entolium"                   NO_FAMILY_SPECIFIED     5
## 1057 "entolium"                   NO_FAMILY_SPECIFIED     5
## 1058 "entolium"                   NO_FAMILY_SPECIFIED     5
## 1059 "entolium"                   NO_FAMILY_SPECIFIED     5
## 1060 "entolium"                   NO_FAMILY_SPECIFIED     5
## 1061 "entolium orbiculare"        NO_FAMILY_SPECIFIED     3
## 1062 "entolium orbiculare"        NO_FAMILY_SPECIFIED     3
## 1063 "entolium orbiculare"        NO_FAMILY_SPECIFIED     3
## 1064 "entolium orbiculare"        NO_FAMILY_SPECIFIED     3
## 1065 "eufistulina"                NO_FAMILY_SPECIFIED     5
## 1066 "eufistulina"                NO_FAMILY_SPECIFIED     5
## 1067 "entolium"                   NO_FAMILY_SPECIFIED     5
## 1068 "entolium"                   NO_FAMILY_SPECIFIED     5
## 1069 "bivalvia"                   <NA>                   17
## 1070 "entolium"                   NO_FAMILY_SPECIFIED     5
## 1071 "bivalvia"                   <NA>                   17
## 1072 "bivalvia"                   <NA>                   17
## 1073 "entolium"                   NO_FAMILY_SPECIFIED     5
## 1074 "entolium"                   NO_FAMILY_SPECIFIED     5
## 1075 "bivalvia"                   <NA>                   17
## 1076 "bivalvia"                   <NA>                   17
## 1077 "bivalvia"                   <NA>                   17
## 1078 "cyrenopsis"                 NO_FAMILY_SPECIFIED     5
## 1079 "cyrenopsis"                 NO_FAMILY_SPECIFIED     5
## 1080 "bivalvia"                   <NA>                   17
## 1081 "bivalvia"                   <NA>                   17
## 1082 "bivalvia"                   <NA>                   17
## 1083 "entolium"                   NO_FAMILY_SPECIFIED     5
## 1084 "mixtipecten"                NO_FAMILY_SPECIFIED     5
## 1085 "mixtipecten"                NO_FAMILY_SPECIFIED     5
## 1086 "entolium membranaceum"      NO_FAMILY_SPECIFIED     3
## 1087 "mixtipecten"                NO_FAMILY_SPECIFIED     5
## 1088 "entolium membranaceum"      NO_FAMILY_SPECIFIED     3
## 1089 "mixtipecten"                NO_FAMILY_SPECIFIED     5
## 1090 "mixtipecten"                NO_FAMILY_SPECIFIED     5
## 1091 "entolium membranaceum"      NO_FAMILY_SPECIFIED     3
## 1092 "mixtipecten"                NO_FAMILY_SPECIFIED     5
## 1093 "entolium membranaceum"      NO_FAMILY_SPECIFIED     3
## 1094 "mixtipecten"                NO_FAMILY_SPECIFIED     5
## 1095 "entolium membranaceum"      NO_FAMILY_SPECIFIED     3
## 1096 "entolium membranaceum"      NO_FAMILY_SPECIFIED     3
## 1097 "entolium membranaceum"      NO_FAMILY_SPECIFIED     3
## 1098 "entolium membranaceum"      NO_FAMILY_SPECIFIED     3
## 1099 "entolium membranaceum"      NO_FAMILY_SPECIFIED     3
## 1100 "entolium membranaceum"      NO_FAMILY_SPECIFIED     3
## 1101 "entolium membranaceum"      NO_FAMILY_SPECIFIED     3
## 1102 "mixtipecten"                NO_FAMILY_SPECIFIED     5
## 1103 "entolium membranaceum"      NO_FAMILY_SPECIFIED     3
## 1104 "mixtipecten"                NO_FAMILY_SPECIFIED     5
## 1105 "entolium membranaceum"      NO_FAMILY_SPECIFIED     3
## 1106 "eselaevitrigonia"           NO_FAMILY_SPECIFIED     5
## 1107 "entolium"                   NO_FAMILY_SPECIFIED     5
## 1108 "eselaevitrigonia"           NO_FAMILY_SPECIFIED     5
## 1109 "eselaevitrigonia"           NO_FAMILY_SPECIFIED     5
## 1110 "entolium"                   NO_FAMILY_SPECIFIED     5
## 1111 "eselaevitrigonia"           NO_FAMILY_SPECIFIED     5
## 1112 "tenuimactra"                NO_FAMILY_SPECIFIED     5
## 1113 "bivalvia"                   <NA>                   17
## 1114 "tenuimactra"                NO_FAMILY_SPECIFIED     5
## 1115 "bivalvia"                   <NA>                   17
## 1116 "bivalvia"                   <NA>                   17
## 1117 "bivalvia"                   <NA>                   17
## 1118 "bivalvia"                   <NA>                   17
## 1119 "hippuritida"                <NA>                   13
## 1120 "bivalvia"                   <NA>                   17
## 1121 "bivalvia"                   <NA>                   17
## 1122 "bivalvia"                   <NA>                   17
## 1123 "bivalvia"                   <NA>                   17
## 1124 "hippuritida"                <NA>                   13
## 1125 "bivalvia"                   <NA>                   17
## 1126 "entolium irenense"          NO_FAMILY_SPECIFIED     3
## 1127 "turnus lacombi"             NO_FAMILY_SPECIFIED     3
## 1128 "entolium irenense"          NO_FAMILY_SPECIFIED     3
## 1129 "bivalvia"                   <NA>                   17
## 1130 "bivalvia"                   <NA>                   17
## 1131 "bivalvia"                   <NA>                   17
## 1132 "bivalvia"                   <NA>                   17
## 1133 "bivalvia"                   <NA>                   17
## 1134 "bivalvia"                   <NA>                   17
## 1135 "bivalvia"                   <NA>                   17
## 1136 "bivalvia"                   <NA>                   17
## 1137 "bivalvia"                   <NA>                   17
## 1138 "bivalvia"                   <NA>                   17
## 1139 "bivalvia"                   <NA>                   17
## 1140 "quoiecchia aliciae"         NO_FAMILY_SPECIFIED     3
## 1141 "bivalvia"                   <NA>                   17
## 1142 "bivalvia"                   <NA>                   17
## 1143 "bivalvia"                   <NA>                   17
## 1144 "bivalvia"                   <NA>                   17
## 1145 "bivalvia"                   <NA>                   17
## 1146 "bivalvia"                   <NA>                   17
## 1147 "bivalvia"                   <NA>                   17
## 1148 "isocrassina"                NO_FAMILY_SPECIFIED     5
## 1149 "hippuritida"                <NA>                   13
## 1150 "bivalvia"                   <NA>                   17
## 1151 "hippuritacea"               <NA>                   10
## 1152 "bivalvia"                   <NA>                   17
## 1153 "praecaprina"                NO_FAMILY_SPECIFIED     5
## 1154 "bivalvia"                   <NA>                   17
## 1155 "bivalvia"                   <NA>                   17
## 1156 "ostreida"                   <NA>                   13
## 1157 "bivalvia"                   <NA>                   17
## 1158 "bivalvia"                   <NA>                   17
## 1159 "myoida"                     <NA>                   13
## 1160 "ostreida"                   <NA>                   13
## 1161 "ostreida"                   <NA>                   13
## 1162 "ostreida"                   <NA>                   13
## 1163 "ostreida"                   <NA>                   13
## 1164 "ostreida"                   <NA>                   13
## 1165 "ostreida"                   <NA>                   13
## 1166 "bivalvia"                   <NA>                   17
## 1167 "bivalvia"                   <NA>                   17
## 1168 "bivalvia"                   <NA>                   17
## 1169 "arcida"                     <NA>                   13
## 1170 "arcida"                     <NA>                   13
## 1171 "bivalvia"                   <NA>                   17
## 1172 "bivalvia"                   <NA>                   17
## 1173 "entolium orbiculare"        NO_FAMILY_SPECIFIED     3
## 1174 "bivalvia"                   <NA>                   17
## 1175 "bivalvia"                   <NA>                   17
## 1176 "physoida"                   NO_FAMILY_SPECIFIED     5
## 1177 "megalocardia"               NO_FAMILY_SPECIFIED     5
## 1178 "megalocardia"               NO_FAMILY_SPECIFIED     5
## 1179 "hippagus isocardioides"     NO_FAMILY_SPECIFIED     3
## 1180 "egerella"                   NO_FAMILY_SPECIFIED     5
## 1181 "bivalvia"                   <NA>                   17
## 1182 "blagraveia"                 NO_FAMILY_SPECIFIED     5
## 1183 "blagraveia"                 NO_FAMILY_SPECIFIED     5
## 1184 "blagraveia"                 NO_FAMILY_SPECIFIED     5
## 1185 "hippagus isocardioides"     NO_FAMILY_SPECIFIED     3
## 1186 "miocardiopsis"              NO_FAMILY_SPECIFIED     5
## 1187 "libitina"                   NO_FAMILY_SPECIFIED     5
## 1188 "libitina"                   NO_FAMILY_SPECIFIED     5
## 1189 "miocardiopsis"              NO_FAMILY_SPECIFIED     5
## 1190 "miocardiopsis korobkovi"    NO_FAMILY_SPECIFIED     3
## 1191 "miocardiopsis"              NO_FAMILY_SPECIFIED     5
## 1192 "miocardiopsis"              NO_FAMILY_SPECIFIED     5
## 1193 "miocardiopsis korobkovi"    NO_FAMILY_SPECIFIED     3
## 1194 "miocardiopsis korobkovi"    NO_FAMILY_SPECIFIED     3
## 1195 "macrosolen"                 NO_FAMILY_SPECIFIED     5
## 1196 "macrosolen"                 NO_FAMILY_SPECIFIED     5
## 1197 "macrosolen"                 NO_FAMILY_SPECIFIED     5
## 1198 "macrosolen"                 NO_FAMILY_SPECIFIED     5
## 1199 "hercodon"                   NO_FAMILY_SPECIFIED     5
## 1200 "isocrassina henckeliusiana" NO_FAMILY_SPECIFIED     3
## 1201 "kokanostrea"                NO_FAMILY_SPECIFIED     5
## 1202 "sokolowia"                  NO_FAMILY_SPECIFIED     5
## 1203 "kokanostrea"                NO_FAMILY_SPECIFIED     5
## 1204 "sokolowia"                  NO_FAMILY_SPECIFIED     5
## 1205 "hatayia"                    NO_FAMILY_SPECIFIED     5
## 1206 "entolium"                   NO_FAMILY_SPECIFIED     5
## 1207 "bivalvia"                   <NA>                   17
## 1208 "bivalvia"                   <NA>                   17
## 1209 "ambocardia"                 NO_FAMILY_SPECIFIED     5
## 1210 "hippuritacea"               <NA>                   10
## 1211 "praecaprina"                NO_FAMILY_SPECIFIED     5
## 1212 "bivalvia"                   <NA>                   17
## 1213 "bivalvia"                   <NA>                   17
## 1214 "branislavia"                NO_FAMILY_SPECIFIED     5
## 1215 "bivalvia"                   <NA>                   17
## 1216 "bivalvia"                   <NA>                   17
## 1217 "entolium"                   NO_FAMILY_SPECIFIED     5
## 1218 "entolium"                   NO_FAMILY_SPECIFIED     5
## 1219 "litschkovitrigonia"         NO_FAMILY_SPECIFIED     5
## 1220 "litschkovitrigonia"         NO_FAMILY_SPECIFIED     5
## 1221 "litschkovitrigonia"         NO_FAMILY_SPECIFIED     5
## 1222 "litschkovitrigonia"         NO_FAMILY_SPECIFIED     5
## 1223 "litschkovitrigonia"         NO_FAMILY_SPECIFIED     5
## 1224 "bivalvia"                   <NA>                   17
## 1225 "bivalvia"                   <NA>                   17
## 1226 "bivalvia"                   <NA>                   17
## 1227 "bivalvia"                   <NA>                   17
## 1228 "bivalvia"                   <NA>                   17
## 1229 "bivalvia"                   <NA>                   17
## 1230 "bivalvia"                   <NA>                   17
## 1231 "bivalvia"                   <NA>                   17
## 1232 "sergipia"                   NO_FAMILY_SPECIFIED     5
## 1233 "sergipia"                   NO_FAMILY_SPECIFIED     5
## 1234 "trigoniida"                 <NA>                   13
## 1235 "ostreida"                   <NA>                   13
## 1236 "bivalvia"                   <NA>                   17
## 1237 "entolium"                   NO_FAMILY_SPECIFIED     5
## 1238 "entolium"                   NO_FAMILY_SPECIFIED     5
## 1239 "ostreida"                   <NA>                   13
## 1240 "bivalvia"                   <NA>                   17
## 1241 "ostreida"                   <NA>                   13
## 1242 "bivalvia"                   <NA>                   17
## 1243 "rhyssomytiloides"           NO_FAMILY_SPECIFIED     5
## 1244 "rhyssomytiloides"           NO_FAMILY_SPECIFIED     5
## 1245 "rhyssomytiloides"           NO_FAMILY_SPECIFIED     5
## 1246 "rhyssomytiloides"           NO_FAMILY_SPECIFIED     5
## 1247 "rhyssomytiloides"           NO_FAMILY_SPECIFIED     5
## 1248 "rhyssomytiloides"           NO_FAMILY_SPECIFIED     5
## 1249 "rhyssomytiloides"           NO_FAMILY_SPECIFIED     5
## 1250 "bivalvia"                   <NA>                   17
## 1251 "bivalvia"                   <NA>                   17
## 1252 "bivalvia"                   <NA>                   17
## 1253 "entolium"                   NO_FAMILY_SPECIFIED     5
## 1254 "bivalvia"                   <NA>                   17
## 1255 "bivalvia"                   <NA>                   17
## 1256 "hippuritida"                <NA>                   13
## 1257 "hippuritida"                <NA>                   13
## 1258 "hippuritida"                <NA>                   13
## 1259 "bivalvia"                   <NA>                   17
## 1260 "bivalvia"                   <NA>                   17
## 1261 "bivalvia"                   <NA>                   17
## 1262 "bivalvia"                   <NA>                   17
## 1263 "bivalvia"                   <NA>                   17
## 1264 "bivalvia"                   <NA>                   17
## 1265 "bivalvia"                   <NA>                   17
## 1266 "bivalvia"                   <NA>                   17
## 1267 "bivalvia"                   <NA>                   17
## 1268 "bivalvia"                   <NA>                   17
## 1269 "bivalvia"                   <NA>                   17
## 1270 "bivalvia"                   <NA>                   17
## 1271 "bivalvia"                   <NA>                   17
## 1272 "bivalvia"                   <NA>                   17
## 1273 "bivalvia"                   <NA>                   17
## 1274 "bivalvia"                   <NA>                   17
## 1275 "bivalvia"                   <NA>                   17
## 1276 "cryptaulia"                 NO_FAMILY_SPECIFIED     5
## 1277 "bivalvia"                   <NA>                   17
## 1278 "bivalvia"                   <NA>                   17
## 1279 "bivalvia"                   <NA>                   17
## 1280 "bivalvia"                   <NA>                   17
## 1281 "bivalvia"                   <NA>                   17
## 1282 "bivalvia"                   <NA>                   17
## 1283 "ostreida"                   <NA>                   13
## 1284 "bivalvia"                   <NA>                   17
## 1285 "bivalvia"                   <NA>                   17
## 1286 "bivalvia"                   <NA>                   17
## 1287 "bivalvia"                   <NA>                   17
## 1288 "branislavia"                NO_FAMILY_SPECIFIED     5
## 1289 "entolium"                   NO_FAMILY_SPECIFIED     5
## 1290 "bivalvia"                   <NA>                   17
## 1291 "bivalvia"                   <NA>                   17
## 1292 "bivalvia"                   <NA>                   17
## 1293 "miseia"                     NO_FAMILY_SPECIFIED     5
## 1294 "miseia"                     NO_FAMILY_SPECIFIED     5
## 1295 "miseia"                     NO_FAMILY_SPECIFIED     5
## 1296 "miseia"                     NO_FAMILY_SPECIFIED     5
## 1297 "miseia"                     NO_FAMILY_SPECIFIED     5
## 1298 "miseia"                     NO_FAMILY_SPECIFIED     5
## 1299 "miseia"                     NO_FAMILY_SPECIFIED     5
## 1300 "miseia"                     NO_FAMILY_SPECIFIED     5
## 1301 "miseia"                     NO_FAMILY_SPECIFIED     5
## 1302 "miseia"                     NO_FAMILY_SPECIFIED     5
## 1303 "miseia"                     NO_FAMILY_SPECIFIED     5
## 1304 "miseia"                     NO_FAMILY_SPECIFIED     5
## 1305 "branislavia"                NO_FAMILY_SPECIFIED     5
## 1306 "miseia"                     NO_FAMILY_SPECIFIED     5
## 1307 "miseia"                     NO_FAMILY_SPECIFIED     5
## 1308 "branislavia"                NO_FAMILY_SPECIFIED     5
## 1309 "miseia"                     NO_FAMILY_SPECIFIED     5
## 1310 "miseia"                     NO_FAMILY_SPECIFIED     5
## 1311 "miseia"                     NO_FAMILY_SPECIFIED     5
## 1312 "branislavia"                NO_FAMILY_SPECIFIED     5
## 1313 "bivalvia"                   <NA>                   17
## 1314 "tatella"                    NO_FAMILY_SPECIFIED     5
## 1315 "bivalvia"                   <NA>                   17
## 1316 "bivalvia"                   <NA>                   17
## 1317 "bivalvia"                   <NA>                   17
## 1318 "bivalvia"                   <NA>                   17
## 1319 "tatella"                    NO_FAMILY_SPECIFIED     5
## 1320 "bivalvia"                   <NA>                   17
## 1321 "bivalvia"                   <NA>                   17
## 1322 "hippuritida"                <NA>                   13
## 1323 "hippuritida"                <NA>                   13
## 1324 "hippuritida"                <NA>                   13
## 1325 "hippuritida"                <NA>                   13
## 1326 "hippuritida"                <NA>                   13
## 1327 "hippuritida"                <NA>                   13
## 1328 "hippuritida"                <NA>                   13
## 1329 "hippuritida"                <NA>                   13
## 1330 "hippuritida"                <NA>                   13
## 1331 "hippuritida"                <NA>                   13
## 1332 "hippuritida"                <NA>                   13
## 1333 "hippuritida"                <NA>                   13
## 1334 "bivalvia"                   <NA>                   17
## 1335 "bivalvia"                   <NA>                   17
## 1336 "bivalvia"                   <NA>                   17
## 1337 "bivalvia"                   <NA>                   17
## 1338 "agnomyax monilifer"         NO_FAMILY_SPECIFIED     3
## 1339 "heteroconchia"              <NA>                   15
## 1340 "heteroconchia"              <NA>                   15
## 1341 "pectinida"                  <NA>                   13
## 1342 "pectinida"                  <NA>                   13
## 1343 "pectinida"                  <NA>                   13
## 1344 "aphaea"                     NO_FAMILY_SPECIFIED     5
## 1345 "aphaea"                     NO_FAMILY_SPECIFIED     5
## 1346 "bivalvia"                   <NA>                   17
## 1347 "bivalvia"                   <NA>                   17
## 1348 "litschkovitrigonia"         NO_FAMILY_SPECIFIED     5
## 1349 "litschkovitrigonia"         NO_FAMILY_SPECIFIED     5
## 1350 "litschkovitrigonia"         NO_FAMILY_SPECIFIED     5
## 1351 "macrosolen"                 NO_FAMILY_SPECIFIED     5
## 1352 "entolium"                   NO_FAMILY_SPECIFIED     5
## 1353 "entolium"                   NO_FAMILY_SPECIFIED     5
## 1354 "entolium"                   NO_FAMILY_SPECIFIED     5
## 1355 "entolium"                   NO_FAMILY_SPECIFIED     5
## 1356 "entolium"                   NO_FAMILY_SPECIFIED     5
## 1357 "entolium"                   NO_FAMILY_SPECIFIED     5
## 1358 "entolium"                   NO_FAMILY_SPECIFIED     5
## 1359 "entolium"                   NO_FAMILY_SPECIFIED     5
## 1360 "entolium"                   NO_FAMILY_SPECIFIED     5
## 1361 "autobranchia"               <NA>                   16
## 1362 "bivalvia"                   <NA>                   17
## 1363 "bivalvia"                   <NA>                   17
## 1364 "veneroidei"                 <NA>                   25
## 1365 "bivalvia"                   <NA>                   17
## 1366 "hemicyclonosta"             NO_FAMILY_SPECIFIED     5
## 1367 "turnus"                     NO_FAMILY_SPECIFIED     5
## 1368 "pterolucina consobrina"     NO_FAMILY_SPECIFIED     3
## 1369 "tenuimactra"                NO_FAMILY_SPECIFIED     5
## 1370 "bivalvia"                   <NA>                   17
## 1371 "stearnsia"                  NO_FAMILY_SPECIFIED     5
## 1372 "bivalvia"                   <NA>                   17
## 1373 "bivalvia"                   <NA>                   17
## 1374 "praecaprina"                NO_FAMILY_SPECIFIED     5
## 1375 "bivalvia"                   <NA>                   17
## 1376 "bivalvia"                   <NA>                   17
## 1377 "bivalvia"                   <NA>                   17
## 1378 "bivalvia"                   <NA>                   17
## 1379 "heteroconchia"              <NA>                   15
## 1380 "pectinida"                  <NA>                   13
## 1381 "bivalvia"                   <NA>                   17
## 1382 "bivalvia"                   <NA>                   17
## 1383 "heteroconchia"              <NA>                   15
## 1384 "bivalvia"                   <NA>                   17
## 1385 "heteroconchia"              <NA>                   15
## 1386 "bivalvia"                   <NA>                   17
## 1387 "heteroconchia"              <NA>                   15
## 1388 "heteroconchia"              <NA>                   15
## 1389 "heteroconchia"              <NA>                   15
## 1390 "heteroconchia"              <NA>                   15
## 1391 "bivalvia"                   <NA>                   17
## 1392 "miocardiopsis"              NO_FAMILY_SPECIFIED     5
## 1393 "miocardiopsis"              NO_FAMILY_SPECIFIED     5
## 1394 "entolium orbiculare"        NO_FAMILY_SPECIFIED     3
## 1395 "entolium orbiculare"        NO_FAMILY_SPECIFIED     3
## 1396 "entolium"                   NO_FAMILY_SPECIFIED     5
## 1397 "entolium"                   NO_FAMILY_SPECIFIED     5
## 1398 "entolium"                   NO_FAMILY_SPECIFIED     5
## 1399 "entolium"                   NO_FAMILY_SPECIFIED     5
## 1400 "entolium"                   NO_FAMILY_SPECIFIED     5
## 1401 "entolium"                   NO_FAMILY_SPECIFIED     5
## 1402 "entolium"                   NO_FAMILY_SPECIFIED     5
## 1403 "bivalvia"                   <NA>                   17
## 1404 "bivalvia"                   <NA>                   17
## 1405 "bivalvia"                   <NA>                   17
## 1406 "bivalvia"                   <NA>                   17
## 1407 "bivalvia"                   <NA>                   17
## 1408 "bivalvia"                   <NA>                   17
## 1409 "bivalvia"                   <NA>                   17
## 1410 "bivalvia"                   <NA>                   17
## 1411 "bivalvia"                   <NA>                   17
## 1412 "autobranchia"               <NA>                   16
## 1413 "bivalvia"                   <NA>                   17
## 1414 "nuculanida"                 <NA>                   13
## 1415 "bivalvia"                   <NA>                   17
## 1416 "bivalvia"                   <NA>                   17
## 1417 "bivalvia"                   <NA>                   17
## 1418 "bivalvia"                   <NA>                   17
## 1419 "bivalvia"                   <NA>                   17
## 1420 "bivalvia"                   <NA>                   17
## 1421 "bivalvia"                   <NA>                   17
## 1422 "panomya norvegica"          NO_FAMILY_SPECIFIED     3
## 1423 "panomya"                    NO_FAMILY_SPECIFIED     5
## 1424 "panomya norvegica"          NO_FAMILY_SPECIFIED     3
## 1425 "panomya norvegica"          NO_FAMILY_SPECIFIED     3
## 1426 "panomya norvegica"          NO_FAMILY_SPECIFIED     3
## 1427 "panomya norvegica"          NO_FAMILY_SPECIFIED     3
## 1428 "hippuritida"                <NA>                   13
## 1429 "protobranchia"              <NA>                   13
## 1430 "bivalvia"                   <NA>                   17
## 1431 "eomeretrix"                 NO_FAMILY_SPECIFIED     5
## 1432 "eomeretrix"                 NO_FAMILY_SPECIFIED     5
## 1433 "eomeretrix"                 NO_FAMILY_SPECIFIED     5
## 1434 "eomeretrix"                 NO_FAMILY_SPECIFIED     5
## 1435 "eomeretrix"                 NO_FAMILY_SPECIFIED     5
## 1436 "bivalvia"                   <NA>                   17
## 1437 "ostreida"                   <NA>                   13
## 1438 "ostreida"                   <NA>                   13
## 1439 "ostreida"                   <NA>                   13
## 1440 "ostreida"                   <NA>                   13
## 1441 "ostreida"                   <NA>                   13
## 1442 "ostreida"                   <NA>                   13
## 1443 "bivalvia"                   <NA>                   17
## 1444 "bivalvia"                   <NA>                   17
## 1445 "bivalvia"                   <NA>                   17
## 1446 "bivalvia"                   <NA>                   17
## 1447 "bivalvia"                   <NA>                   17
## 1448 "bivalvia"                   <NA>                   17
## 1449 "bivalvia"                   <NA>                   17
## 1450 "caspiconcha rubani"         NO_FAMILY_SPECIFIED     3
## 1451 "cardilona bensoni"          NO_FAMILY_SPECIFIED     3
## 1452 "egerella"                   NO_FAMILY_SPECIFIED     5
## 1453 "egerella"                   NO_FAMILY_SPECIFIED     5
## 1454 "bivalvia"                   <NA>                   17
## 1455 "menneroctenia"              NO_FAMILY_SPECIFIED     5
## 1456 "bivalvia"                   <NA>                   17
## 1457 "bivalvia"                   <NA>                   17
## 1458 "pseudoheligmus nigeriensis" NO_FAMILY_SPECIFIED     3
## 1459 "pseudoheligmus nigeriensis" NO_FAMILY_SPECIFIED     3
## 1460 "pseudoheligmus nigeriensis" NO_FAMILY_SPECIFIED     3
## 1461 "bivalvia"                   <NA>                   17
## 1462 "entolium"                   NO_FAMILY_SPECIFIED     5
## 1463 "entolium"                   NO_FAMILY_SPECIFIED     5
## 1464 "entolium"                   NO_FAMILY_SPECIFIED     5
## 1465 "entolium"                   NO_FAMILY_SPECIFIED     5
## 1466 "entolium orbiculare"        NO_FAMILY_SPECIFIED     3
## 1467 "entolium"                   NO_FAMILY_SPECIFIED     5
## 1468 "entolium utukokense"        NO_FAMILY_SPECIFIED     3
## 1469 "bivalvia"                   <NA>                   17
## 1470 "pectinoidea"                <NA>                   10
## 1471 "bivalvia"                   <NA>                   17
## 1472 "hippuritida"                <NA>                   13
## 1473 "hippuritida"                <NA>                   13
## 1474 "pholadomyida"               <NA>                   13
## 1475 "bivalvia"                   <NA>                   17
## 1476 "entolium utukokense"        NO_FAMILY_SPECIFIED     3
## 1477 "ambocardia delta"           NO_FAMILY_SPECIFIED     3
## 1478 "ambocardia delta"           NO_FAMILY_SPECIFIED     3
## 1479 "bivalvia"                   <NA>                   17
## 1480 "bivalvia"                   <NA>                   17
## 1481 "ambocardia delta"           NO_FAMILY_SPECIFIED     3
## 1482 "ambocardia delta"           NO_FAMILY_SPECIFIED     3
## 1483 "ambocardia delta"           NO_FAMILY_SPECIFIED     3
## 1484 "ambocardia delta"           NO_FAMILY_SPECIFIED     3
## 1485 "ambocardia delta"           NO_FAMILY_SPECIFIED     3
## 1486 "ambocardia delta"           NO_FAMILY_SPECIFIED     3
## 1487 "ambocardia delta"           NO_FAMILY_SPECIFIED     3
## 1488 "ambocardia delta"           NO_FAMILY_SPECIFIED     3
## 1489 "bivalvia"                   <NA>                   17
## 1490 "ambocardia delta"           NO_FAMILY_SPECIFIED     3
## 1491 "solemyida"                  <NA>                   13
## 1492 "lucinida"                   <NA>                   13
## 1493 "solemyida"                  <NA>                   13
## 1494 "bivalvia"                   <NA>                   17
## 1495 "bivalvia"                   <NA>                   17
## 1496 "bivalvia"                   <NA>                   17
## 1497 "bivalvia"                   <NA>                   17
## 1498 "bivalvia"                   <NA>                   17
## 1499 "bivalvia"                   <NA>                   17
## 1500 "virgotrigonia"              NO_FAMILY_SPECIFIED     5
## 1501 "virgotrigonia"              NO_FAMILY_SPECIFIED     5
## 1502 "mediterraneotrigonia"       NO_FAMILY_SPECIFIED     5
## 1503 "bivalvia"                   <NA>                   17
## 1504 "bivalvia"                   <NA>                   17
## 1505 "bivalvia"                   <NA>                   17
## 1506 "bivalvia"                   <NA>                   17
## 1507 "ostreidina"                 <NA>                   12
## 1508 "bivalvia"                   <NA>                   17
## 1509 "ostreidina"                 <NA>                   12
## 1510 "ostreidina"                 <NA>                   12
## 1511 "bivalvia"                   <NA>                   17
## 1512 "bivalvia"                   <NA>                   17
## 1513 "bivalvia"                   <NA>                   17
## 1514 "bivalvia"                   <NA>                   17
## 1515 "bivalvia"                   <NA>                   17
## 1516 "bivalvia"                   <NA>                   17
## 1517 "bivalvia"                   <NA>                   17
errant_taxonomy %>%
  group_by(rnk) %>%
  summarize(n = n())
## # A tibble: 10 × 2
##      rnk     n
##    <dbl> <int>
##  1     3   134
##  2     4     1
##  3     5   528
##  4    10    52
##  5    12     5
##  6    13   104
##  7    15     9
##  8    16    29
##  9    17   608
## 10    25    47
errant_taxonomy %>% pull(tna_trimmed) %>% unique()
##   [1] "bivalvia"                   "hypoxytoma"                
##   [3] "entolium membranaceum"      "cnestriella"               
##   [5] "skwarkoella"                "entolium orbiculare"       
##   [7] "girardotia"                 "seendia"                   
##   [9] "entolium"                   "entolium demissus"         
##  [11] "dozyia"                     "egerella"                  
##  [13] "eufistulina"                "arcoidea"                  
##  [15] "veneroidei"                 "cardioidea"                
##  [17] "nuculoidea"                 "tiza"                      
##  [19] "semelina"                   "tenuimactra"               
##  [21] "sootryenella"               "aeora"                     
##  [23] "macrosolen"                 "scrobiculabra"             
##  [25] "semimodiola"                "tellinocyclas"             
##  [27] "miocardiopsis"              "semimodiola hastata"       
##  [29] "fulcrella"                  "laubriereia"               
##  [31] "ostreidina"                 "recticardo"                
##  [33] "goossensia"                 "loparia"                   
##  [35] "pholadopsis"                "megadiceras"               
##  [37] "hippuritacea"               "divarikellia"              
##  [39] "adansonella"                "praerangia"                
##  [41] "hippuritida"                "arcida"                    
##  [43] "birkelundita"               "sita"                      
##  [45] "eriphylopsis"               "potamomya"                 
##  [47] "libitina"                   "ferganoconcha"             
##  [49] "sinodiopsis"                "blagraveia"                
##  [51] "lucinoidea"                 "entolium utukokense"       
##  [53] "autobranchia"               "pterolucina"               
##  [55] "ostreacea"                  "nuculanoidea"              
##  [57] "stearnsia"                  "myoida"                    
##  [59] "nuculida"                   "sergipia"                  
##  [61] "caspiconcha"                "turnus"                    
##  [63] "rhedensia"                  "cossmannella"              
##  [65] "heterodonta"                "euptera zambiensis"        
##  [67] "mixtipecten"                "eselaevitrigonia"          
##  [69] "praecaprina"                "inoceramya"                
##  [71] "arcticlam nanseni"          "mytilon theresae"          
##  [73] "entolium "                  "ostreida"                  
##  [75] "praeaucellina"              "tetravaccinites"           
##  [77] "pseudopironaea"             "pterioida"                 
##  [79] "paramusculus"               "mancosinodia"              
##  [81] "phaxas"                     "joannisiella"              
##  [83] "pectinoidea"                "disparilia"                
##  [85] "protagelus"                 "ostreoidea"                
##  [87] "trigoniida"                 "carditacea"                
##  [89] "hatayia"                    "branislavia"               
##  [91] "macrosolen cyclopeus"       "isocrassina henckeliusiana"
##  [93] "eomeretrix"                 "sokolowia"                 
##  [95] "kokanostrea"                "platygena"                 
##  [97] "chattonia"                  "pterolucina consobrina"    
##  [99] "cyrenopsis"                 "entolium irenense"         
## [101] "turnus lacombi"             "quoiecchia aliciae"        
## [103] "isocrassina"                "physoida"                  
## [105] "megalocardia"               "hippagus isocardioides"    
## [107] "miocardiopsis korobkovi"    "hercodon"                  
## [109] "ambocardia"                 "litschkovitrigonia"        
## [111] "rhyssomytiloides"           "cryptaulia"                
## [113] "miseia"                     "tatella"                   
## [115] "agnomyax monilifer"         "heteroconchia"             
## [117] "pectinida"                  "aphaea"                    
## [119] "hemicyclonosta"             "nuculanida"                
## [121] "panomya norvegica"          "panomya"                   
## [123] "protobranchia"              "caspiconcha rubani"        
## [125] "cardilona bensoni"          "menneroctenia"             
## [127] "pseudoheligmus nigeriensis" "pholadomyida"              
## [129] "ambocardia delta"           "solemyida"                 
## [131] "lucinida"                   "virgotrigonia"             
## [133] "mediterraneotrigonia"

This finds 1517 records that either have no family or NA. Most are identified to genus level, but a similar number are species. It turns out that those with NA in the family are only identified to a higher taxonomic level, so we can leave them alone.

The code below instead shows the lower taxa without a family specified. These are ripe for inclusion.

errant_families <-
  bivalve_cleaned %>%
  filter(fml == "NO_FAMILY_SPECIFIED" & rnk == 3) %>%
  select(tna_trimmed, fml, rnk)
print(errant_families, n = Inf)
## # A tibble: 134 × 3
##     tna_trimmed                fml                   rnk
##     <chr>                      <chr>               <dbl>
##   1 entolium membranaceum      NO_FAMILY_SPECIFIED     3
##   2 entolium membranaceum      NO_FAMILY_SPECIFIED     3
##   3 entolium membranaceum      NO_FAMILY_SPECIFIED     3
##   4 entolium membranaceum      NO_FAMILY_SPECIFIED     3
##   5 entolium membranaceum      NO_FAMILY_SPECIFIED     3
##   6 entolium orbiculare        NO_FAMILY_SPECIFIED     3
##   7 entolium orbiculare        NO_FAMILY_SPECIFIED     3
##   8 entolium orbiculare        NO_FAMILY_SPECIFIED     3
##   9 entolium orbiculare        NO_FAMILY_SPECIFIED     3
##  10 entolium orbiculare        NO_FAMILY_SPECIFIED     3
##  11 entolium orbiculare        NO_FAMILY_SPECIFIED     3
##  12 entolium orbiculare        NO_FAMILY_SPECIFIED     3
##  13 entolium orbiculare        NO_FAMILY_SPECIFIED     3
##  14 entolium orbiculare        NO_FAMILY_SPECIFIED     3
##  15 entolium orbiculare        NO_FAMILY_SPECIFIED     3
##  16 entolium orbiculare        NO_FAMILY_SPECIFIED     3
##  17 entolium orbiculare        NO_FAMILY_SPECIFIED     3
##  18 entolium orbiculare        NO_FAMILY_SPECIFIED     3
##  19 entolium demissus          NO_FAMILY_SPECIFIED     3
##  20 entolium demissus          NO_FAMILY_SPECIFIED     3
##  21 entolium demissus          NO_FAMILY_SPECIFIED     3
##  22 entolium demissus          NO_FAMILY_SPECIFIED     3
##  23 semimodiola hastata        NO_FAMILY_SPECIFIED     3
##  24 semimodiola hastata        NO_FAMILY_SPECIFIED     3
##  25 entolium membranaceum      NO_FAMILY_SPECIFIED     3
##  26 entolium membranaceum      NO_FAMILY_SPECIFIED     3
##  27 entolium membranaceum      NO_FAMILY_SPECIFIED     3
##  28 entolium membranaceum      NO_FAMILY_SPECIFIED     3
##  29 entolium membranaceum      NO_FAMILY_SPECIFIED     3
##  30 entolium utukokense        NO_FAMILY_SPECIFIED     3
##  31 entolium utukokense        NO_FAMILY_SPECIFIED     3
##  32 entolium utukokense        NO_FAMILY_SPECIFIED     3
##  33 entolium utukokense        NO_FAMILY_SPECIFIED     3
##  34 entolium orbiculare        NO_FAMILY_SPECIFIED     3
##  35 euptera zambiensis         NO_FAMILY_SPECIFIED     3
##  36 entolium membranaceum      NO_FAMILY_SPECIFIED     3
##  37 entolium membranaceum      NO_FAMILY_SPECIFIED     3
##  38 entolium demissus          NO_FAMILY_SPECIFIED     3
##  39 entolium demissus          NO_FAMILY_SPECIFIED     3
##  40 arcticlam nanseni          NO_FAMILY_SPECIFIED     3
##  41 mytilon theresae           NO_FAMILY_SPECIFIED     3
##  42 entolium membranaceum      NO_FAMILY_SPECIFIED     3
##  43 entolium orbiculare        NO_FAMILY_SPECIFIED     3
##  44 entolium orbiculare        NO_FAMILY_SPECIFIED     3
##  45 entolium orbiculare        NO_FAMILY_SPECIFIED     3
##  46 entolium orbiculare        NO_FAMILY_SPECIFIED     3
##  47 entolium membranaceum      NO_FAMILY_SPECIFIED     3
##  48 entolium membranaceum      NO_FAMILY_SPECIFIED     3
##  49 entolium membranaceum      NO_FAMILY_SPECIFIED     3
##  50 entolium membranaceum      NO_FAMILY_SPECIFIED     3
##  51 entolium membranaceum      NO_FAMILY_SPECIFIED     3
##  52 entolium membranaceum      NO_FAMILY_SPECIFIED     3
##  53 entolium membranaceum      NO_FAMILY_SPECIFIED     3
##  54 entolium membranaceum      NO_FAMILY_SPECIFIED     3
##  55 entolium membranaceum      NO_FAMILY_SPECIFIED     3
##  56 entolium membranaceum      NO_FAMILY_SPECIFIED     3
##  57 entolium membranaceum      NO_FAMILY_SPECIFIED     3
##  58 entolium membranaceum      NO_FAMILY_SPECIFIED     3
##  59 entolium membranaceum      NO_FAMILY_SPECIFIED     3
##  60 entolium membranaceum      NO_FAMILY_SPECIFIED     3
##  61 entolium membranaceum      NO_FAMILY_SPECIFIED     3
##  62 entolium membranaceum      NO_FAMILY_SPECIFIED     3
##  63 entolium membranaceum      NO_FAMILY_SPECIFIED     3
##  64 entolium membranaceum      NO_FAMILY_SPECIFIED     3
##  65 entolium membranaceum      NO_FAMILY_SPECIFIED     3
##  66 macrosolen cyclopeus       NO_FAMILY_SPECIFIED     3
##  67 isocrassina henckeliusiana NO_FAMILY_SPECIFIED     3
##  68 entolium membranaceum      NO_FAMILY_SPECIFIED     3
##  69 entolium membranaceum      NO_FAMILY_SPECIFIED     3
##  70 entolium membranaceum      NO_FAMILY_SPECIFIED     3
##  71 entolium membranaceum      NO_FAMILY_SPECIFIED     3
##  72 entolium membranaceum      NO_FAMILY_SPECIFIED     3
##  73 entolium membranaceum      NO_FAMILY_SPECIFIED     3
##  74 entolium membranaceum      NO_FAMILY_SPECIFIED     3
##  75 entolium membranaceum      NO_FAMILY_SPECIFIED     3
##  76 entolium membranaceum      NO_FAMILY_SPECIFIED     3
##  77 entolium orbiculare        NO_FAMILY_SPECIFIED     3
##  78 pterolucina consobrina     NO_FAMILY_SPECIFIED     3
##  79 entolium orbiculare        NO_FAMILY_SPECIFIED     3
##  80 entolium orbiculare        NO_FAMILY_SPECIFIED     3
##  81 entolium orbiculare        NO_FAMILY_SPECIFIED     3
##  82 entolium orbiculare        NO_FAMILY_SPECIFIED     3
##  83 entolium membranaceum      NO_FAMILY_SPECIFIED     3
##  84 entolium membranaceum      NO_FAMILY_SPECIFIED     3
##  85 entolium membranaceum      NO_FAMILY_SPECIFIED     3
##  86 entolium membranaceum      NO_FAMILY_SPECIFIED     3
##  87 entolium membranaceum      NO_FAMILY_SPECIFIED     3
##  88 entolium membranaceum      NO_FAMILY_SPECIFIED     3
##  89 entolium membranaceum      NO_FAMILY_SPECIFIED     3
##  90 entolium membranaceum      NO_FAMILY_SPECIFIED     3
##  91 entolium membranaceum      NO_FAMILY_SPECIFIED     3
##  92 entolium membranaceum      NO_FAMILY_SPECIFIED     3
##  93 entolium membranaceum      NO_FAMILY_SPECIFIED     3
##  94 entolium membranaceum      NO_FAMILY_SPECIFIED     3
##  95 entolium membranaceum      NO_FAMILY_SPECIFIED     3
##  96 entolium irenense          NO_FAMILY_SPECIFIED     3
##  97 turnus lacombi             NO_FAMILY_SPECIFIED     3
##  98 entolium irenense          NO_FAMILY_SPECIFIED     3
##  99 quoiecchia aliciae         NO_FAMILY_SPECIFIED     3
## 100 entolium orbiculare        NO_FAMILY_SPECIFIED     3
## 101 hippagus isocardioides     NO_FAMILY_SPECIFIED     3
## 102 hippagus isocardioides     NO_FAMILY_SPECIFIED     3
## 103 miocardiopsis korobkovi    NO_FAMILY_SPECIFIED     3
## 104 miocardiopsis korobkovi    NO_FAMILY_SPECIFIED     3
## 105 miocardiopsis korobkovi    NO_FAMILY_SPECIFIED     3
## 106 isocrassina henckeliusiana NO_FAMILY_SPECIFIED     3
## 107 agnomyax monilifer         NO_FAMILY_SPECIFIED     3
## 108 pterolucina consobrina     NO_FAMILY_SPECIFIED     3
## 109 entolium orbiculare        NO_FAMILY_SPECIFIED     3
## 110 entolium orbiculare        NO_FAMILY_SPECIFIED     3
## 111 panomya norvegica          NO_FAMILY_SPECIFIED     3
## 112 panomya norvegica          NO_FAMILY_SPECIFIED     3
## 113 panomya norvegica          NO_FAMILY_SPECIFIED     3
## 114 panomya norvegica          NO_FAMILY_SPECIFIED     3
## 115 panomya norvegica          NO_FAMILY_SPECIFIED     3
## 116 caspiconcha rubani         NO_FAMILY_SPECIFIED     3
## 117 cardilona bensoni          NO_FAMILY_SPECIFIED     3
## 118 pseudoheligmus nigeriensis NO_FAMILY_SPECIFIED     3
## 119 pseudoheligmus nigeriensis NO_FAMILY_SPECIFIED     3
## 120 pseudoheligmus nigeriensis NO_FAMILY_SPECIFIED     3
## 121 entolium orbiculare        NO_FAMILY_SPECIFIED     3
## 122 entolium utukokense        NO_FAMILY_SPECIFIED     3
## 123 entolium utukokense        NO_FAMILY_SPECIFIED     3
## 124 ambocardia delta           NO_FAMILY_SPECIFIED     3
## 125 ambocardia delta           NO_FAMILY_SPECIFIED     3
## 126 ambocardia delta           NO_FAMILY_SPECIFIED     3
## 127 ambocardia delta           NO_FAMILY_SPECIFIED     3
## 128 ambocardia delta           NO_FAMILY_SPECIFIED     3
## 129 ambocardia delta           NO_FAMILY_SPECIFIED     3
## 130 ambocardia delta           NO_FAMILY_SPECIFIED     3
## 131 ambocardia delta           NO_FAMILY_SPECIFIED     3
## 132 ambocardia delta           NO_FAMILY_SPECIFIED     3
## 133 ambocardia delta           NO_FAMILY_SPECIFIED     3
## 134 ambocardia delta           NO_FAMILY_SPECIFIED     3

We can write this out to a file that can then be uploaded to LifeWatch and use that to compare against its databases.

errant_families %>%
  select(tna_trimmed) %>%
  unique() %>%
  transmute(ScientificName = tna_trimmed) %>%
  write_csv("./output/uncertain_taxa.csv")

This list of uncertain taxa can then be compared against an online data base, such as LifeWatch.

lifewatch_taxon_check <-
  read_csv("./output/19470_uncertain_taxa.csv")
## New names:
## Rows: 20 Columns: 64
## ── Column specification
## ─────────────────────────────────────────────────── Delimiter: "," chr
## (31): scientificname, note_fuzzy_col, environment_aphia_WORMS, name... dbl
## (16): required_fields_check, aphiaid_WORMS, scientificnameid, taxon... lgl
## (17): datasetname_fuzzy_col, taxonomicstatus_fuzzy_col, taxonrank_f...
## ℹ Use `spec()` to retrieve the full column specification for this data. ℹ
## Specify the column types or set `show_col_types = FALSE` to quiet this
## message.
## • `NOTUSED_scientificname` -> `NOTUSED_scientificname...6`
## • `NOTUSED_scientificname` -> `NOTUSED_scientificname...15`
## • `NOTUSED_scientificname` -> `NOTUSED_scientificname...20`
## • `NOTUSED_scientificname` -> `NOTUSED_scientificname...26`
## • `NOTUSED_scientificname` -> `NOTUSED_scientificname...30`
## • `NOTUSED_scientificname` -> `NOTUSED_scientificname...34`
## • `NOTUSED_scientificname` -> `NOTUSED_scientificname...41`
print(lifewatch_taxon_check)
## # A tibble: 20 × 64
##    scientificname        required_fields… datasetname_fuz… taxonomicstatus…
##    <chr>                            <dbl> <lgl>            <lgl>           
##  1 Entolium                             1 NA               NA              
##  2 Entolium membranaceum                1 NA               NA              
##  3 Balabania                            1 NA               NA              
##  4 Dechaseauxia                         1 NA               NA              
##  5 Hardaghia                            1 NA               NA              
##  6 Entolium orbiculare                  1 NA               NA              
##  7 Entolium demissus                    1 NA               NA              
##  8 Megadiceras                          1 NA               NA              
##  9 Entolium utukokense                  1 NA               NA              
## 10 Rhedensia                            1 NA               NA              
## 11 Praecaprina                          1 NA               NA              
## 12 Entolium (Entolium)                  1 NA               NA              
## 13 Tetravaccinites                      1 NA               NA              
## 14 Pseudopironaea                       1 NA               NA              
## 15 Hatayia                              1 NA               NA              
## 16 Branislavia                          1 NA               NA              
## 17 Entolium irenense                    1 NA               NA              
## 18 Cryptaulia                           1 NA               NA              
## 19 Miseia                               1 NA               NA              
## 20 Tetravaccinites coll…                1 NA               NA              
## # … with 60 more variables: taxonrank_fuzzy_col <lgl>,
## #   NOTUSED_scientificname...6 <lgl>, scientificnameid_fuzzy_col <lgl>,
## #   isextinct_fuzzy_col <lgl>, match_type_fuzzy_col <lgl>,
## #   match_count_fuzzy_col <lgl>, note_fuzzy_col <chr>,
## #   environment_aphia_WORMS <chr>, name_aphia_WORMS <chr>,
## #   aphiaid_WORMS <dbl>, NOTUSED_scientificname...15 <chr>,
## #   scientificnameid <dbl>, status_aphia_WORMS <chr>, …

#allocating families to errant taxa

bivalve_cleaned$fml[str_which(bivalve_cleaned$tna_trimmed, "entolium")] <- "Entoliidae"
bivalve_cleaned$fml[str_which(bivalve_cleaned$tna_trimmed, "balabania")] <- "Radiolitidae"
bivalve_cleaned$fml[str_which(bivalve_cleaned$tna_trimmed, "dechaseauxia")] <- "Radiolitidae"
bivalve_cleaned$fml[str_which(bivalve_cleaned$tna_trimmed, "hardaghia")] <- "Radiolitidae"
bivalve_cleaned$fml[str_which(bivalve_cleaned$tna_trimmed, "megaceras")] <- "Epidiceratidae"
bivalve_cleaned$fml[str_which(bivalve_cleaned$tna_trimmed, "rhedensia")] <- "Hippuritidae"
bivalve_cleaned$fml[str_which(bivalve_cleaned$tna_trimmed, "praecaprina")] <- "Caprinidae"
bivalve_cleaned$fml[str_which(bivalve_cleaned$tna_trimmed, "tetravaccinites")] <- "Hippuritidae"
bivalve_cleaned$fml[str_which(bivalve_cleaned$tna_trimmed, "pseudopironaea")] <- "Hippuritidae"
bivalve_cleaned$fml[str_which(bivalve_cleaned$tna_trimmed, "hatayia")] <- "Radiolitidae"
bivalve_cleaned$fml[str_which(bivalve_cleaned$tna_trimmed, "branislava")] <- "Radiolitidae"
bivalve_cleaned$fml[str_which(bivalve_cleaned$tna_trimmed, "miseia")] <- "Radiolitidae"
bivalve_cleaned$fml[str_which(bivalve_cleaned$tna_trimmed, "aeora")] <- "Veneridae"
bivalve_cleaned$fml[str_which(bivalve_cleaned$tna_trimmed, "agnomyax")] <- "Tellinidae"
bivalve_cleaned$fml[str_which(bivalve_cleaned$tna_trimmed, "aviculoperna")] <- "Pteriidae"
bivalve_cleaned$fml[str_which(bivalve_cleaned$tna_trimmed, "birkelundita")] <- "Carditidae"
bivalve_cleaned$fml[str_which(bivalve_cleaned$tna_trimmed, "branislavia")] <- "Radiolitidae"
bivalve_cleaned$fml[str_which(bivalve_cleaned$tna_trimmed, "cardilona")] <- "Verticordiidae"
bivalve_cleaned$fml[str_which(bivalve_cleaned$tna_trimmed, "caspiconcha")] <- "Kalenteridae"
bivalve_cleaned$fml[str_which(bivalve_cleaned$tna_trimmed, "chattonia")] <- "Crassatellidae"
bivalve_cleaned$fml[str_which(bivalve_cleaned$tna_trimmed, "cyrenopsis")] <- "Neomiodontidae"
bivalve_cleaned$fml[str_which(bivalve_cleaned$tna_trimmed, "divarikellia")] <- "Galeommatidae"
bivalve_cleaned$fml[str_which(bivalve_cleaned$tna_trimmed, "dozyia")] <- "Astartidae"
bivalve_cleaned$fml[str_which(bivalve_cleaned$tna_trimmed, "egerella")] <- "Donacidae"
bivalve_cleaned$fml[str_which(bivalve_cleaned$tna_trimmed, "eomeretrix")] <- "Veneridae"
bivalve_cleaned$fml[str_which(bivalve_cleaned$tna_trimmed, "eselaevitrigonia")] <- "Trigoniidae"
bivalve_cleaned$fml[str_which(bivalve_cleaned$tna_trimmed, "ferganoconcha")] <- "Ferganoconchidae"
bivalve_cleaned$fml[str_which(bivalve_cleaned$tna_trimmed, "fulcrella")] <- "Basterotiidae"
bivalve_cleaned$fml[str_which(bivalve_cleaned$tna_trimmed, "goossensia")] <- "Carditidae"
bivalve_cleaned$fml[str_which(bivalve_cleaned$tna_trimmed, "heligmina")] <- "Eligmidae"
bivalve_cleaned$fml[str_which(bivalve_cleaned$tna_trimmed, "hemicyclonosta")] <- "Cardiliidae"
bivalve_cleaned$fml[str_which(bivalve_cleaned$tna_trimmed, "hippagus")] <- "Mytilidae"
bivalve_cleaned$fml[str_which(bivalve_cleaned$tna_trimmed, "hypoxytoma")] <- "Oxytomidae"
bivalve_cleaned$fml[str_which(bivalve_cleaned$tna_trimmed, "isocrassina")] <- "Astartidae"
bivalve_cleaned$fml[str_which(bivalve_cleaned$tna_trimmed, "joannisiella")] <- "Ungulinidae"
bivalve_cleaned$fml[str_which(bivalve_cleaned$tna_trimmed, "korobkovitrigonia")] <- "Vaugoniidae"
bivalve_cleaned$fml[str_which(bivalve_cleaned$tna_trimmed, "laubriereia")] <- "Lasaeidae"
bivalve_cleaned$fml[str_which(bivalve_cleaned$tna_trimmed, "macrosolen")] <- "Psammobiidae"
bivalve_cleaned$fml[str_which(bivalve_cleaned$tna_trimmed, "mancosinodia")] <- "Veneridae"
bivalve_cleaned$fml[str_which(bivalve_cleaned$tna_trimmed, "mediterraneotrigonia")] <- "Vaugoniidae"
bivalve_cleaned$fml[str_which(bivalve_cleaned$tna_trimmed, "megadiceras")] <- "Epidiceratidae"
bivalve_cleaned$fml[str_which(bivalve_cleaned$tna_trimmed, "miocardiopsis")] <- "Glossidae"
bivalve_cleaned$fml[str_which(bivalve_cleaned$tna_trimmed, "mixtipecten")] <- "Pectinidae"
bivalve_cleaned$fml[str_which(bivalve_cleaned$tna_trimmed, "neiloides")] <- "Malletidae"
bivalve_cleaned$fml[str_which(bivalve_cleaned$tna_trimmed, "panomya")] <- "Hiatellidae"
bivalve_cleaned$fml[str_which(bivalve_cleaned$tna_trimmed, "paramusculus")] <- "Mytelidae"
bivalve_cleaned$fml[str_which(bivalve_cleaned$tna_trimmed, "phaxas")] <- "Pharidae"
bivalve_cleaned$fml[str_which(bivalve_cleaned$tna_trimmed, "pholadopsis")] <- "Pholadidae"
bivalve_cleaned$fml[str_which(bivalve_cleaned$tna_trimmed, "physoida")] <- "Basterotiidae"
bivalve_cleaned$fml[str_which(bivalve_cleaned$tna_trimmed, "platymya")] <- "Laternulidae"
bivalve_cleaned$fml[str_which(bivalve_cleaned$tna_trimmed, "potamomya")] <- "Corbulidae"
bivalve_cleaned$fml[str_which(bivalve_cleaned$tna_trimmed, "protelliptio")] <- "Unionidae"
bivalve_cleaned$fml[str_which(bivalve_cleaned$tna_trimmed, "pterolucina")] <- "Lucinidae"
bivalve_cleaned$fml[str_which(bivalve_cleaned$tna_trimmed, "quoiecchia")] <- "Myophorellidae"
bivalve_cleaned$fml[str_which(bivalve_cleaned$tna_trimmed, "scrobiculabra")] <- "Semelidae"
bivalve_cleaned$fml[str_which(bivalve_cleaned$tna_trimmed, "seendia")] <- "Crassatellidae"
bivalve_cleaned$fml[str_which(bivalve_cleaned$tna_trimmed, "semolina")] <- "Semelidae"
bivalve_cleaned$fml[str_which(bivalve_cleaned$tna_trimmed, "sergipia")] <- "Inoceramidae"
bivalve_cleaned$fml[str_which(bivalve_cleaned$tna_trimmed, "skwarkoella")] <- "Trigoniidae"
bivalve_cleaned$fml[str_which(bivalve_cleaned$tna_trimmed, "tellinocyclas")] <- "Cyrenidae"
bivalve_cleaned$fml[str_which(bivalve_cleaned$tna_trimmed, "tivellina")] <- "Veneridae"
bivalve_cleaned$fml[str_which(bivalve_cleaned$tna_trimmed, "turnus")] <- "Teredinidae"
bivalve_cleaned$fml[str_which(bivalve_cleaned$tna_trimmed, "virgotrigonia")] <- "Megatrigoniidae"
bivalve_cleaned$fml[str_which(bivalve_cleaned$tna_trimmed, "zorrita")] <- "Lasaeidae"

print(bivalve_cleaned)
## # A tibble: 62,841 × 111
##    oid    cid   idn   iid   tdf   tna     rnk tid   oei   oli     eag   lag
##    <chr>  <chr> <chr> <chr> <chr> <chr> <dbl> <chr> <chr> <chr> <dbl> <dbl>
##  1 occ:1… col:… Nucu… var:… reco… Nucu…     3 txn:… Lute… Pria…  47.8  33.9
##  2 occ:1… col:… Nucu… <NA>  obso… Nucu…     3 txn:… Lute… Pria…  47.8  33.9
##  3 occ:1… col:… <NA>  <NA>  <NA>  Hilg…     3 txn:… Lute… Pria…  47.8  33.9
##  4 occ:1… col:… Calo… <NA>  reco… Calo…     3 txn:… Lute… Pria…  47.8  33.9
##  5 occ:1… col:… Nucu… <NA>  <NA>  Nucu…     5 txn:… Lute… Pria…  47.8  33.9
##  6 occ:1… col:… <NA>  <NA>  <NA>  Homo…     3 txn:… Lute… Pria…  47.8  33.9
##  7 occ:1… col:… <NA>  <NA>  <NA>  Pter…     3 txn:… Lute… Pria…  47.8  33.9
##  8 occ:1… col:… <NA>  <NA>  <NA>  Ebur…     3 txn:… Lute… Pria…  47.8  33.9
##  9 occ:1… col:… Luci… var:… reco… Myrt…     3 txn:… Lute… Pria…  47.8  33.9
## 10 occ:1… col:… <NA>  <NA>  <NA>  Luci…     3 txn:… Lute… Pria…  47.8  33.9
## # … with 62,831 more rows, and 99 more variables: aut <chr>, pby <chr>,
## #   rid <chr>, phl <chr>, cll <chr>, odl <chr>, fml <chr>, gnl <chr>,
## #   abv <chr>, abu <chr>, lng <dbl>, lat <dbl>, cnm <chr>, aka <chr>,
## #   cc2 <chr>, stp <chr>, cny <chr>, prc <chr>, gsc <chr>, ggc <chr>,
## #   pm1 <chr>, pln <dbl>, pla <dbl>, gpl <chr>, sfm <chr>, ssc <chr>,
## #   sls <chr>, slb <chr>, scm <chr>, lt1 <chr>, la1 <chr>, lf1 <chr>,
## #   lm1 <chr>, env <chr>, tec <chr>, gcm <chr>, tpm <chr>, cct <chr>, …

And now finally remove taxa with NA or no family specified.

bivalve_cleaned <-
  bivalve_cleaned %>%
  filter(!str_detect(fml, "NO_FAMILY_SPECIFIED"), !is.na(fml))

And finally check it’s all good.

bivalve_cleaned %>%
  pull(fml) %>%
  unique()
##   [1] "Nuculidae"           "Nuculanidae"         "Pholadomyidae"      
##   [4] "Pteriidae"           "Pectinidae"          "Lucinidae"          
##   [7] "Carditidae"          "Crassatellidae"      "Mactridae"          
##  [10] "Tellinidae"          "Kelliellidae"        "Veneridae"          
##  [13] "Corbulidae"          "Periplomatidae"      "Astartidae"         
##  [16] "Semelidae"           "Verticordiidae"      "Yoldiidae"          
##  [19] "Glycymerididae"      "Ungulinidae"         "Pinnidae"           
##  [22] "Limopsidae"          "Malletiidae"         "Parallelodontidae"  
##  [25] "Arcidae"             "Cucullaeidae"        "Mytilidae"          
##  [28] "Inoceramidae"        "Entoliidae"          "Anomiidae"          
##  [31] "Limidae"             "Gryphaeidae"         "Ostreidae"          
##  [34] "Megatrigoniidae"     "Mactromyidae"        "Cardiidae"          
##  [37] "Pharidae"            "Arcticidae"          "Gastrochaenidae"    
##  [40] "Pholadidae"          "Laternulidae"        "Poromyidae"         
##  [43] "Hiatellidae"         "Oxytomidae"          "Neitheidae"         
##  [46] "Spondylidae"         "Terquemiidae"        "Dimyidae"           
##  [49] "Flemingostreidae"    "Sareptidae"          "Neilonellidae"      
##  [52] "Propeamussiidae"     "Malleidae"           "Parilimyidae"       
##  [55] "Cuspidariidae"       "Solemyidae"          "Buchiidae"          
##  [58] "Thyasiridae"         "Thraciidae"          "Plicatulidae"       
##  [61] "Bakevelliidae"       "Requieniidae"        "Monopleuridae"      
##  [64] "Radiolitidae"        "Hippuritidae"        "Trigoniidae"        
##  [67] "Pleuromyidae"        "Chamidae"            "Teredinidae"        
##  [70] "Anatinellidae"       "Steinmanellidae"     "Caprinidae"         
##  [73] "Corbiculidae"        "Tancrediidae"        "Solenidae"          
##  [76] "Icanotiidae"         "Neomiodontidae"      "Ceratomyidae"       
##  [79] "Mulleriidae"         "Ptychomyinae"        "Kalenteridae"       
##  [82] "Donacidae"           "Caprinuloideidae"    "Heteropectinidae"   
##  [85] "Aviculopectinidae"   "Psammobiidae"        "Glossidae"          
##  [88] "Crenellidae"         "Quenstedtiidae"      "Laevitrigoniidae"   
##  [91] "Pulvinitinae"        "Lahillidae"          "Nucinellidae"       
##  [94] "Erycinidae"          "Clavagellidae"       "Cyrenidae"          
##  [97] "Leptonidae"          "Condylocardiidae"    "Cardiolariidae"     
## [100] "Antillocaprinidae"   "Pollicidae"          "Dreissenidae"       
## [103] "Spheniopsidae"       "Sportellidae"        "Cardiniidae"        
## [106] "Solecurtidae"        "Trapezidae"          "Kelliidae"          
## [109] "Unionidae"           "Ichthyosarcolitidae" "Galeommatidae"      
## [112] "Myidae"              "Basterotiidae"       "Lasaeidae"          
## [115] "Pandoridae"          "Lyonsiidae"          "Plagioptychidae"    
## [118] "Noetiidae"           "Polyconitidae"       "Caprinulidae"       
## [121] "Epidiceratidae"      "Trigonioididae"      "Isoarcidae"         
## [124] "Trechmannellidae"    "Montacutidae"        "Posidoniidae"       
## [127] "Myophorellidae"      "Nakamuranaiadidae"   "Sphaeriidae"        
## [130] "Ferganoconchidae"    "Mesodesmatidae"      "Raetomyidae"        
## [133] "Philobryidae"        "Petricolina"         "Vesicomyidae"       
## [136] "Manzanellidae"       "Palaeolophidae"      "Diceratidae"        
## [139] "Gaimardiidae"        "Cassianellidae"      "Pergamidiidae"      
## [142] "Hyriidae"            "Mytelidae"           "Myochamidae"        
## [145] "Chondrodontidae"     "Pseudomonotidae"     "Saxicavellidae"     
## [148] "Margaritariidae"     "Euloxidae"           "Isocyprinidae"      
## [151] "Dicerocardiidae"     "Caprotinidae"        "Cardiliidae"        
## [154] "Margaritiferidae"    "Jilinoconchidae"     "Nippononaiidae"     
## [157] "Tindariidae"         "Fusidae"             "Vaugoniidae"

Mapping data

We can also do more fun things like plot the occurrences on a map. Useful guides to this are found in three blog posts starting here. Working with mapping data is more involved than simple points, particularly if you want to change the projection away from the standard Mercator. The package sf (short for ‘simple features’, describing how the data is stored) can deal with all of this and then in plotting the projection can be changed. A rule of thumb is make sure to assign the coordinate reference system (CRS) when creating map objects.

Package rnaturalearth has regularly updated maps that should be better to use than in the built-in maps library. Here we download the country outlines in sf format.

world_map <-
  ne_countries(returnclass = "sf")

Next, convert the occurrences locations into an sf object also. I’ve filtered down to occurrences identified to species level and then taken a random sample (‘slice’) of 1000 rows. The final stage is convert to an sf object using the longitude and latitude columns, with the standard WGS84 CRS (indicated with 4326 in this case). You can find this code to use looking at epsg.io, searching for the projection, and using the code given. In the case of WGS84 coordinates (standard latitude and longitude) shown this is 4326.

occurrences_to_plot <-
  bivalve_cleaned %>%
  filter(rnk == 3) %>%
  slice_sample(n = 1000) %>%
  st_as_sf(coords = c("lng", "lat"), crs = 4326, agr = "constant")

Now, we put these together into the plot using the geom_sf function to build up the layers: map outline first, then points over the top. The colour scale is good for colour-blind people, so is a good option to prefer. Here I modify the map projection using coord_sf(crs) into the Robinson projection.

The essence of plotting with geom_sf is to add the different layers one by one. In this case, the first call plots the country outlines then the second line plots the occurrence points over the top; scale_colour_viridis is a good set of plotting colours to use as they are colour blind-friendly; and the final theme options remove the border and the grey background usual in ggplot plots.

# Getting this to work for the Winkel Tripel Projection used help from here: https://wilkelab.org/practicalgg/articles/Winkel_tripel.html
crs_wintri <- "+proj=wintri +datum=WGS84 +no_defs +over"

grat_wintri <-
  st_graticule(lat = c(-89.9, seq(-80, 80, 20), 89.9)) |>
  st_transform_proj(crs = crs_wintri)

ggplot() +
  geom_sf(data = grat_wintri, colour = "grey30", size = 0.25/.pt) +
  geom_sf(data = world_map, inherit.aes = FALSE) +
  geom_sf(data = occurrences_to_plot, mapping = aes(colour = fml)) +
  scale_colour_viridis(discrete = TRUE) +
  coord_sf(crs = crs_wintri, datum = NULL) +
  ggthemes::theme_map() +
  theme(
    legend.position = "none",
    panel.border = element_blank()
  )
Map of Bivalvia localities from the Cretaceous and Palaeogene.

Map of Bivalvia localities from the Cretaceous and Palaeogene.

Palaeogeographical map

We use the palaeogeographical reconstructions from the combined Muller2019-Young2019-Cao2020 (MYC) model provided by GPlates (https://www.gplates.org) (Müller et al. 2019; Young et al. 2019; X. Cao et al. 2022; Torsvik et al. 2019). This provides a nice visualization of the palaeogeography including locations of shallow marine environments, land, mountains, and ice caps. We exported these four layers reconstructed to 68 Ma in the latest Cretaceous and plot them as a base map with modern coastlines indicated. The data files for the reconstructions are provided with GPlates or can be downloaded from Earthbyte.

The different layers (shallow marine, land, mountain, ice cap) are included in four files in the ./data/palaeogeographical_reconstructions directory and read into a list then combined using the functions below. Combining these data sets into one makes it quicker to plot and colour the different layers in the base map.

palaeogeo_file_layers <-
  c("Shallow marine" = "sm", "Landmass" = "lm", "Mountain" = "m", "Ice cap" = "i")

read_geojson <-
  function(prefix, filename = "./data/palaeogeographical_reconstructions/id_402_2_reconstructed_68.00Ma.gmt") {
  # Read a list of GeoJSON files and combine into a single sf collection.
  #
  # Arguments:
  #   prefix: layer prefixes for the data files ("sm", "lm", "m", "i") taken from Cao et al. (2017).
  #   filename: rest of GeoJSON file name.
  #
  # Returns:
  #   A single feature collection with geometries and ID column ("id").
  str_replace(filename, "id", prefix) %>%
    st_read() %>%
    add_column(id = prefix)
}

map_data <-
  palaeogeo_file_layers %>%
    purrr::map(read_geojson) %>%
    do.call(rbind, .) %>%
    mutate(
      id = factor(id, levels = palaeogeo_file_layers, labels = names(palaeogeo_file_layers))
    )
## Reading layer `sm_402_2_reconstructed_68.00Ma' from data source 
##   `/Users/bcm/GitHub/spatiophylogenetic_modelling/data/palaeogeographical_reconstructions/sm_402_2_reconstructed_68.00Ma.gmt' 
##   using driver `OGR_GMT'
## Simple feature collection with 829 features and 15 fields
## Geometry type: MULTIPOLYGON
## Dimension:     XY
## Bounding box:  xmin: -180 ymin: -83.18105 xmax: 180 ymax: 89.52032
## Geodetic CRS:  WGS 84
## Reading layer `lm_402_2_reconstructed_68.00Ma' from data source 
##   `/Users/bcm/GitHub/spatiophylogenetic_modelling/data/palaeogeographical_reconstructions/lm_402_2_reconstructed_68.00Ma.gmt' 
##   using driver `OGR_GMT'
## Simple feature collection with 323 features and 15 fields
## Geometry type: MULTIPOLYGON
## Dimension:     XY
## Bounding box:  xmin: -180 ymin: -90 xmax: 180 ymax: 86.3155
## Geodetic CRS:  WGS 84
## Reading layer `m_402_2_reconstructed_68.00Ma' from data source 
##   `/Users/bcm/GitHub/spatiophylogenetic_modelling/data/palaeogeographical_reconstructions/m_402_2_reconstructed_68.00Ma.gmt' 
##   using driver `OGR_GMT'
## Simple feature collection with 312 features and 15 fields
## Geometry type: MULTIPOLYGON
## Dimension:     XY
## Bounding box:  xmin: -180 ymin: -89.50942 xmax: 180 ymax: 84.56318
## Geodetic CRS:  WGS 84
## Reading layer `i_402_2_reconstructed_68.00Ma' from data source 
##   `/Users/bcm/GitHub/spatiophylogenetic_modelling/data/palaeogeographical_reconstructions/i_402_2_reconstructed_68.00Ma.gmt' 
##   using driver `OGR_GMT'
## Simple feature collection with 4 features and 15 fields
## Geometry type: MULTIPOLYGON
## Dimension:     XY
## Bounding box:  xmin: 4.391382 ymin: -83.96268 xmax: 103.195 ymax: 22.29246
## Geodetic CRS:  WGS 84
modern_coastlines <-
  st_read("./data/palaeogeographical_reconstructions/Global_EarthByte_GPlates_PresentDay_Coastlines_Polyline_reconstructed_68.00Ma.gmt")
## Reading layer `Global_EarthByte_GPlates_PresentDay_Coastlines_Polyline_reconstructed_68.00Ma' from data source `/Users/bcm/GitHub/spatiophylogenetic_modelling/data/palaeogeographical_reconstructions/Global_EarthByte_GPlates_PresentDay_Coastlines_Polyline_reconstructed_68.00Ma.gmt' 
##   using driver `OGR_GMT'
## Simple feature collection with 1945 features and 23 fields
## Geometry type: MULTILINESTRING
## Dimension:     XY
## Bounding box:  xmin: -180 ymin: -87.88832 xmax: 180 ymax: 83.53398
## Geodetic CRS:  WGS 84
base_map <-
  ggplot() +
  geom_sf(data = lwgeom::st_transform_proj(map_data, crs = crs_wintri), aes(fill = id), colour = NA) +
    scale_discrete_manual(
      # colours for base map layers
      values =
        c(
          "Ice cap"        = "#DAD3FF",
          "Landmass"       = "#FFD23A",
          "Mountain"       = "#FF8D51",
          "Shallow marine" = "#45D8FF"
        ),
      aesthetics = c("fill"),
      name = "Palaeogeography"
    ) +
    geom_sf(data = grat_wintri, colour = "grey30", size = 0.25/.pt) +
    ggthemes::theme_map() +
    theme(panel.border = element_blank())

base_map +
  geom_sf(data = modern_coastlines, colour = "grey60") +
    coord_sf(crs = crs_wintri, datum = NULL)
Palaeogeographical reconstruction in the latest Cretaceous (68 Ma), with modern coastlines indicated, based on the environmental reconstrution of @Cao2017Bb and the combined rotaion models of @Muller2019T, @Young2019GF, and @Cao2022GR, with correction to the Pacific by @Torsvik2019GGG.

Palaeogeographical reconstruction in the latest Cretaceous (68 Ma), with modern coastlines indicated, based on the environmental reconstrution of W. Cao et al. (2017) and the combined rotaion models of Müller et al. (2019), Young et al. (2019), and X. Cao et al. (2022), with correction to the Pacific by Torsvik et al. (2019).

Rotating modern locality coordinates

We have the modern localities for our bivalve occurrences, but need to rotate these to their position at the end of the Cretaceous (68 Ma) to get their palaeocoordinates. The GPlates Web Service can do this online or through docker, but doesn’t offer the rotation model used for the combined MYC palaeogeographical reconstruction, and can be quite slow to do many requests — and we have tens-of-thousands of bivalve occurrences. Instead, we field this out to pyGPlates. This step of reconstruction has been done, so the file ./data/reconstructed_68Ma.gmt can be read in directly.

ek_occurrences <-
  bivalve_cleaned |>
  filter(rnk == 3) |>
  filter(lag >= 66 & lag < 70)

modern_coords <-
  ek_occurrences %>%
  select(c("oid", "tna", "rnk", "eag", "lag", "fml", "lng", "lat", "tna_trimmed")) %>%
  st_as_sf(coords = c("lng", "lat"), crs = 4326)

st_write(modern_coords, "./data/kpg_bivalve_modern_coordinates.gmt", driver = "OGR_GMT")

We have to reduce the number of columns above as OGR_GMT seems only to save the first 68.

Instructions to install pyGPlates can be found here, including the necessary Python packages (specifically proj). Anaconda/Miniconda is a good Python managing system in which you can also create project environments. The code in the python blocks below can be run in a python environment — separate to the main R environment — or can be run directly within R using the reticulate package (Ushey, Allaire, and Tang 2022).

There are two steps to reconstructing the palaeocoordinates: (1) assigning the localities to the static polygons (i.e. plate fragments that move with continental drift), and (2) rotating the plate fragments and localities to the palaeolocations. First we assign the points and output a GPML file that can be visualized in GPlates directly.

import pygplates

# Load one or more rotation files into a rotation model.
# rotation_model = pygplates.RotationModel('./data/palaeogeographical_reconstructions/Muller2019-Young2019-Cao2020_CombinedRotations.rot')
rotation_model = pygplates.RotationModel('./data/Scotese PaleoAtlas_v3/PALEOMAP Global Plate Model/PALEOMAP_PlateModel.rot')

# Filename for the static plate boundaries
# static_polygons_filename = './data/palaeogeographical_reconstructions/Global_EarthByte_GPlates_PresentDay_StaticPlatePolygons.gpmlz'
static_polygons_filename = './data/Scotese PaleoAtlas_v3/PALEOMAP Global Plate Model/PALEOMAP_PlatePolygons.gpml'

# Load some features.
point_features = pygplates.FeatureCollection('./data/kpg_bivalve_modern_coordinates.gmt')

# Output filename for assigned points
assigned_points_output = './data/bivalve_assigned_locations.gpml'

# Place point occurrences onto plate static polygons
assigned_points = pygplates.partition_into_plates(
    static_polygons_filename,
    rotation_model,
    point_features,
    properties_to_copy = [
        pygplates.PartitionProperty.reconstruction_plate_id,
        pygplates.PartitionProperty.valid_time_period
    ]
)

# Write assigned points to a GPML file that can be used in GPlates
assigned_points_collection = pygplates.FeatureCollection(assigned_points)
assigned_points_collection.write(assigned_points_output)

Next we rotate the palaeolocations to 68 Ma and export an OGR-GMT file of these palaeocoordinates.

# Reconstruct features to this geological time.
reconstruction_time = 69

# The filename of the exported reconstructed geometries.
# It's a shapefile called 'reconstructed_68Ma.shp'.
export_filename = './data/reconstructed_{0}Ma.gmt'.format(reconstruction_time)

# Reconstruct the features to the reconstruction time and export them to a shapefile.
pygplates.reconstruct(assigned_points_collection, rotation_model, export_filename, reconstruction_time)

These converted locations can be read back into R and plotted over the base map.

palaeo_coords <-
  st_read("./data/reconstructed_69Ma.gmt")
## Reading layer `reconstructed_69Ma' from data source 
##   `/Users/bcm/GitHub/spatiophylogenetic_modelling/data/reconstructed_69Ma.gmt' 
##   using driver `OGR_GMT'
## Simple feature collection with 4534 features and 10 fields
## Geometry type: POINT
## Dimension:     XY
## Bounding box:  xmin: -169.126 ymin: -81.09403 xmax: 170.8473 ymax: 73.51573
## Geodetic CRS:  WGS 84
palaeo_coords <-
  palaeo_coords %>%
  add_column(
    plng = st_coordinates(palaeo_coords)[, 1],
    plat = st_coordinates(palaeo_coords)[, 2]
  )

base_map +
  geom_sf(data = palaeo_coords) +
  coord_sf(crs = crs_wintri, datum = NULL)
Palaeolocations of marine bivalve occurrences in the latest Cretaceous (70–66 Ma) plotted on a palaeogeographical map at 68 Ma.

Palaeolocations of marine bivalve occurrences in the latest Cretaceous (70–66 Ma) plotted on a palaeogeographical map at 68 Ma.

Palaeoenvironmental data

We’ve got palaeoenvironmental data from an analysis done by Ridgwell and Schmidt (2010). The data is stored in a netCDF file: this is a compact way to store data on geographical scales where you have values at various locations. It’s different to the mapping data above: this netCDF is raster with data in points, whereas the maps above were vector and had lines of data. Ridgwell and Schmidt (2010) did a reconstruction of the palaeoenvironment at the K/Pg boundary using Biogem from the GeNie package, one of a series of Earth-systems models. There are two steps to getting data from a netCDF file into R: (1) loading the metadata, then (2) pulling the data you want into R. I get some warning about deprecated tidyverse functions, but I don’t think this is anything to worry about (yet). This page has a good guide to getting started with netCDF.

metadata <-
  # ncdump::NetCDF("./data/EXAMPLE.p0055c.RidgwellSchmidt2010.SPIN1/biogem/fields_biogem_3d.nc")
  ncdump::NetCDF("./data/texyoo.pfclann.nc")

# look at the variables
print(metadata$variable, n = Inf)
## # A tibble: 18 × 16
##    name        ndims natts prec  units longname group_index storage shuffle
##    <chr>       <int> <int> <chr> <chr> <chr>          <int>   <dbl> <lgl>  
##  1 W_mm_dpth       4    17 float "cm … VERT.VE…           1       1 FALSE  
##  2 srfSalFlux…     4    17 float "m s… WATER_F…           1       1 FALSE  
##  3 ucurrTot_m…     4    17 float "cm … TOTAL O…           1       1 FALSE  
##  4 vcurrTot_m…     4    17 float "cm … TOTAL O…           1       1 FALSE  
##  5 interactiv…     4    17 float "m s… Interac…           1       1 FALSE  
##  6 uVelSeaice…     4    17 float "m s… U COMPO…           1       1 FALSE  
##  7 vVelSeaice…     4    17 float "m s… V COMPO…           1       1 FALSE  
##  8 temp_mm_uo      4    17 float "deg… OCN TOP…           1       1 FALSE  
##  9 temp_mm_dp…     4    17 float "deg… POTENTI…           1       1 FALSE  
## 10 salinity_m…     4    17 float "(ps… SALINIT…           1       1 FALSE  
## 11 streamFn_m…     4    17 float "cm3… STREAMF…           1       1 FALSE  
## 12 mixLyrDpth…     4    17 float "m"   MIXED L…           1       1 FALSE  
## 13 iceconc_mm…     4    17 float " "   AICE : …           1       1 FALSE  
## 14 icedepth_m…     4    17 float "m"   HICE: M…           1       1 FALSE  
## 15 PLE_mm_uo       4    17 float "kg … PLE:PRE…           1       1 FALSE  
## 16 outflow_mm…     4    17 float "kg … RIVER O…           1       1 FALSE  
## 17 snowfall_m…     4    17 float "kg … SNOWFAL…           1       1 FALSE  
## 18 anomSaltFl…     4    17 float "kg … P-E FLU…           1       1 FALSE  
## # … with 7 more variables: compression <lgl>, unlim <lgl>,
## #   make_missing_value <lgl>, missval <dbl>, hasAddOffset <lgl>,
## #   hasScaleFact <lgl>, id <dbl>
# load the desired variables
kpg_env <-
  # nc_open("./data/EXAMPLE.p0055c.RidgwellSchmidt2010.SPIN1/biogem/fields_biogem_3d.nc")
  nc_open("./data/texyoo.pfclann.nc")

Loading the data gives us lots of lovely information. The important thing to note is that all the environment variables have values in fours components: longitude, latitude, depth, and time. The last of these is because GeNie runs for a set number of simulated years to reach a steady state. In this case it’s for 10,000 years, so we’ll want to use the values from year 10,000.

lon <-
  # ncvar_get(kpg_env, "lon")
  c(seq(0, 180 - 0.5 * (180 / 97), length.out = 48), seq(-180 + 0.5 * (180 / 97), 0, length.out = 48))
lat <-
  # ncvar_get(kpg_env, "lat")
  seq(-90, 90, length.out = 73)
temp <-
  # ncvar_get(kpg_env, "ocn_temp")
  ncvar_get(kpg_env, "temp_mm_dpth")
dim(temp)
## [1] 96 73

The dimensions of the temperature values are 36, 36, 16, and 13. It’s a four-dimensional array with 36 values each for longitude and latitude, 16 depth values, and 13 time values. The ordering means that rows are longitude, columns are latitude, and depth and time are printed as sequential matrices. We can plot this quickly.

# image(lon, lat, temp[,,1,13], asp = 1)
image(lon, lat, temp, asp = 1)

But his isn’t too useful and needs some cleaning up.

# miss_val <- ncatt_get(kpg_env, "ocn_temp", "missing_value")
miss_val <- ncatt_get(kpg_env, "temp_mm_dpth", "missing_value")
temp[temp == miss_val$value] <- NA
surface_temp <- temp#[,,1,13]

grid <- expand.grid(lon = lon, lat = lat)
grid$ocn_temp <- c(surface_temp)

modern_coastlines <-
  st_read("/Users/bcm/Documents/PALEOMAP_PoliticalBoundaries/reconstructed_69.00Ma/reconstructed_69.00Ma_polyline.gmt")
## Reading layer `reconstructed_69.00Ma_polyline' from data source 
##   `/Users/bcm/Documents/PALEOMAP_PoliticalBoundaries/reconstructed_69.00Ma/reconstructed_69.00Ma_polyline.gmt' 
##   using driver `OGR_GMT'
## Simple feature collection with 279 features and 9 fields
## Geometry type: MULTILINESTRING
## Dimension:     XY
## Bounding box:  xmin: -180 ymin: -87.1309 xmax: 180 ymax: 84.25879
## Geodetic CRS:  WGS 84
temp_plot <-
  st_as_stars(grid, dims = c("lon", "lat"), values = "ocn_temp", crs = 4326) |>
  st_as_sf()
st_crs(temp_plot) <- 4326 
# temp_plot <-
#   temp_plot |>
#   st_transform(crs_wintri)

ggplot() +
  geom_sf(data = grat_wintri, colour = "grey30", size = 0.25 / .pt) +
  # geom_stars(data = temp_plot) + #,  aes(x = lon, y = lat, fill = ocn_temp)) +
  geom_sf(data = temp_plot, aes(fill = ocn_temp), colour = NA) +
  geom_sf(data = modern_coastlines, colour = "grey60") +
  geom_sf(data = palaeo_coords) +
  scale_fill_viridis(option = "inferno") +
  theme_void() +
  coord_sf(crs = crs_wintri, datum = NULL)

You can see that the coastlines and temperatures don’t quite match up. The projections must be different. We can either reproject the coastlines onto the 2010 data or find some more recent temperature data using this outlines.

Pulling out values

The last step here is to pull out the environmental values for each of the occurrences.

occ_coord <-
  palaeo_coords %>%
  as_data_frame() %>%
  select(c("plng", "plat")) %>%
  SpatialPoints()
temp_coord <- SpatialPoints(grid[complete.cases(grid),])

# from https://stackoverflow.com/a/27444208
nearest_points <-
  apply(gDistance(temp_coord, occ_coord, byid = TRUE), 1, which.min)

The code above identifies the row number in the expanded temperature data that corresponds to the location for each occurrence. We can then extract and add that as a new column to palaeo_coords.

occ_temp <-
  grid[complete.cases(grid),]$ocn_temp[nearest_points]

palaeo_coords <-
  palaeo_coords %>%
  add_column(pocn_temp = occ_temp)

Finding extinctions

We find taxa that go extinct by charting those present before the K/Pg boundary that aren’t present afterwards. Initially, do this for each species: we group into families later. Filtering out the species that go extinct, we choose those that have their last appearances after 70 Ma but before 66 Ma; you can be more precise and do after 68 Ma, but I don’t know whether the PBDB is dated precise enough to make much difference here.

species_extinctions <-
  bivalve_cleaned %>%
    filter(
      rnk == 3,
      lag >= 66 & lag <= 70
    ) %>%
    group_by(tna_trimmed) %>%
    summarize(kpg_ext = 1)

In the context of families, we can see the proportions of the families that go extinct. We choose species from the Maastrichtian and Dining, join on the previous table identifying those species that go extinct, then group into families and count the proportion that go extinction at the K/Pg boundary.

fml_extinction_proportion <-
  bivalve_cleaned %>%
  filter(
    rnk == 3,
    lag >= 61.2 & lag <= 72 & eag >= 66
  ) %>%
  left_join(species_extinctions, by = "tna_trimmed") %>%
  select(tna_trimmed, fml, kpg_ext) %>%
  distinct(.keep_all = TRUE) %>%
  mutate(kpg_ext = replace(kpg_ext, is.na(kpg_ext), 0)) %>%
  group_by(fml, kpg_ext) %>%
  summarize(n = n()) %>%
  mutate(ext_prop = n / sum(n)) %>%
  filter(kpg_ext == 1) # select the extinction proportion
## `summarise()` has grouped output by 'fml'. You can override using the
## `.groups` argument.
fml_extinction_proportion %>%
  ggplot(aes(x = fml, y = ext_prop)) +
  geom_col() +
  coord_flip()
Proportions of bivalve families that go extinction across the Cretaceous/palaeogene boundary.

Proportions of bivalve families that go extinction across the Cretaceous/palaeogene boundary.

This last plot may also benefit from showing the number of species for each family (to gauge the relative magnitude) and another version showing the absolute numbers.

Starting modelling

These last chunks essentially bring together most of the things we need to start modelling. These first few bits below will start with showing the general workflow for modelling extinctions across the Cretaceous–Palaeogene boundary and can then be readily extended to ask other or more specific questions. There are two levels to look at when modelling the extinction of these Bivalve taxa: (1) the family level, and (2) the species level.

Family extinctions
Using the proportion of the family that goes extinct as the variable to predict.
Species extinctions
Predicting the extinction of species as an absolute: whether it does or does not go extinct.

You’ll be familiar with linear modelling, typified by the equation \(y = mx + c\). In our case, \(y\) is extinction — the value we’re trying to predict — while \(x\) is the predictor that we think has an effect, or drives extinction — temperature, area, salinity etc. In other language, extinction is the dependent variable while temperature, area, salinity are the independent variables. Additional complexity comes in because standard linear modelling assumes that the dependent variable is normally-distributed. What \(y = mx + c\) is shorthand for is this:

\[ y \sim \textrm{Normal} \left( \mu, \sigma \right) \\ \mu = mx + c, \]

where \(\mu\) is the mean and \(\sigma\) is a constant standard deviation. You’re predictors, \(x\) are use to work out the mean of a normal distribution, \(\mu\), which has a fixed standard deviation, \(\sigma\). Going through the normal distribution is where the ‘randomness’ inherent in the data comes from and accounts for the spread of the data about the best-fit line. Using this normal distribution model is fine for heights or lengths or other things like that, but we have two different examples:

  1. Family extinctions is a proportion, so must between 0–1. You could force a very narrow normal distribution with a small standard deviation, but the maths extends to infinity no matter how unlikely the probably may be.
  2. Species extinctions will be a yes/no on whether that species goes extinct (included as 1 or 0). The normal distribution is continuous, so cannot easily be applied to discrete values like this.

This is where the extension of generalized linear modelling comes in: this relaxes the requirement to use a normal distribution for the dependent variable, so now we can predict proportions or discrete values.

Family extinctions

Family extinctions we’ve calculated as the proportion of the family that goes extinction (between 0–1). Therefore, to model this we need to use a distribution that extends between 0–1, but not beyond that. This is prime territory for the beta distribution, so our model instead looks like this:

\[ E_i \sim \textrm{Beta} \left( \bar{p}_i, \theta \right) \\ \textrm{logit} \left( \bar{p}_i \right) = m_x x_i + c \\ m_x \sim \textrm{Normal} \left( 0, 10 \right) \\ c \sim \textrm{Normal} \left( 0, 10 \right) \\ \theta = \phi + 2 \\ \phi \sim \textrm{Normal} \left( 0, 10 \right), \]

where \(E\) is the proportion of the family that goes extinct, \(\bar{p}\) is the Beta distribution mean and \(\theta\) its shape parameter, \(x\) is the predictor, \(m\) and \(c\) are the coefficient and intercept of the linear model. For the Beta distribution, \(\theta\) determines the shape: whether the probabilities are condensed (e.g. 0.4–0.6) into the middle or focused around the edges (e.g. 0 or 1) with \(\theta = 2\) giving a flat distribution. Here we add the extra variable \(\phi\) so that \(\theta\) is centred around 2. The logit expression is needed to convert the ingoing model into a value between 0–1 as is required for \(\bar{p}\).

The additional feature here is that this is a more Bayesian realization of generalized linear modelling: the parameters in the model (\(\bar{p}, m_x, c, and \phi\)) all have probability distributions associated with them. In essence, rather than heading towards definite values, this model and these distributions incorporate uncertainty in measurements and models so that we end up with probabilities for a variety of different results, with the ‘best’ linear model having the highest probability. The model can’t tell you the exact level of extinction that a certain driver might generate (like with a very simplified linear model might suggest), but will give you the probability of different amounts of extinction, with one level hopefully being the most probable.

Most of the modelling can be done in R, but often is ‘slow’: adding complicated probability distributions is difficult, especially as you add more data and more complex models. This is added to R repeatedly having to keep checking between the data, working out what calculations it needs to do to get to the model values, then tell the computer to do those things. Instead we’ll use the package brms that uses an external language called Stan. Stan is designed specifically for generalized linear modelling and is also compiled: this means that it starts by taking the model and making a little program that can then skip past all the copying and checking R does and goes straight the computer and calculates. Fast.

The other feature of Stan, and one that’s often used when Bayesian inference is involved, is rather than sampling and calculating the probabilities directly, which is difficult, is instead to push some values through and calculate a result, then shift the parameters and calculate it again. By doing this repeatedly, you can then build up a picture of what the final distribution looks like without having to calculate it in full, complicated detail. This is called Monte Carlo sampling (MC) and often has some extra details called Metropolis Coupled Monte Carlo (MCMC).

brms is an R package that creates the Stan code from the data and model and tells Stan to run an MCMC analysis then parses the results ready to be plotted. It installs all the bits needed, so we don’t need to leave R to do these analyses.

Spread of occurrences

This first model will use the family proportions of extinction and will model this related to the amount of geographical space that the family encompasses. This space will be calculated using a minimum spanning tree (MST). An MST plots the shortest branching path between all the points included in a set of data: the more spread out the points, the longer the MST length. MSTDist in the chunk below calculates the MST for each family at the K/Pg boundary, and the results are joined to the proportions calculated earlier.

family_mst_data <-
  palaeo_coords %>%
  st_drop_geometry() %>%
  group_by(fml) %>%
  summarize(
    n_occs = n(),
    mst = MSTDist(plng, plat)$MST_km
  ) %>%
  select(fml, n_occs, mst) %>%
  left_join(fml_extinction_proportion, by = "fml")
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(GCDMatrix[, VertList], na.rm = TRUE): no non-missing
## arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(GCDMatrix[, VertList], na.rm = TRUE): no non-missing
## arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(GCDMatrix[, VertList], na.rm = TRUE): no non-missing
## arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_), dim = 1:2, dimnames =
## list(: no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_), dim =
## c(1L, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_), dim = 1:2, dimnames =
## list(: no non-missing arguments to min; returning Inf
## Warning in min(GCDMatrix[, VertList], na.rm = TRUE): no non-missing
## arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(GCDMatrix[, VertList], na.rm = TRUE): no non-missing
## arguments to min; returning Inf

## Warning in min(GCDMatrix[, VertList], na.rm = TRUE): no non-missing
## arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(GCDMatrix[, VertList], na.rm = TRUE): no non-missing
## arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(structure(c(NA_real_, NA_real_, NA_real_, NA_real_,
## NA_real_, : no non-missing arguments to min; returning Inf
## Warning in min(GCDMatrix[, VertList], na.rm = TRUE): no non-missing
## arguments to min; returning Inf
family_mst_data %>%
  ggplot(aes(x = fml, y = mst)) +
  geom_col() +
  coord_flip()

family_mst_data %>%
  ggplot(aes(x = mst, y = ext_prop)) +
  geom_point()

This last plot is a good one to check as it’s the linear model we want to test: extinction against MST length. There’s hints of a positive relationship but the data are certainly well spread.

A few rows have NA for their extinction values; these are the families that don’t appear until after the K/Pg boundary. We’ll remove these in a moment, but we’re nearly ready to go in into modelling. The last bit will be to standardize the MST values: change all the values so that they have a mean 0 and standard deviation of 1. This reduces the effects of scale when doing the modelling; we will convert back afterwards when we need to.

mst_scaling <-
  scale(family_mst_data$mst)

family_mst_scaled <-
  family_mst_data %>%
  mutate(mst_stand = mst_scaling[, 1]) %>%
  filter(!is.na(ext_prop)) %>%
  select(fml, mst_stand, ext_prop)

Now we generate the linear model. This takes the form above, but I’ll replace a few of the parameter symbols to match that we’re using MST:

\[ E_i \sim \textrm{ZOIBeta} \left( \bar{p}_i, \phi \right) \\ \textrm{logit} \left( \bar{p}_i \right) = \alpha + \beta_M M_i \\ \beta_M \sim \textrm{Normal} \left(0, 10 \right) \\ \alpha \sim \textrm{Normal} \left( 0, 10 \right) \\ \phi \sim \textrm{Gamma} \left( 0.01, 0.01 \right), \]

where \(E_i\) is the proportion of the family that goes extinct, \(M_i\) is the scaled minimum spanning tree for the whole family, \(\alpha\) is the intercept, and \(\beta_M\) is the coefficient for \(M_i\) in the linear model. Here we use a Zero-One-Inflated Beta distribution (ZOIBeta) as the data has many proportions of 1.0 for our extinctions; these are likely a combination of total extinction and small numbers of species.

We now implement this in brms. This borrows the formula notation used in base R linear models, but adds in the extras needed for generalized linear modelling. The first thing that’s useful to do is to show what parameters need to be defined initially with get_priors.

get_prior(
  ext_prop ~ 0 + mst_stand,
  data = family_mst_scaled,
  family = zero_one_inflated_beta()
)
##              prior class      coef group resp dpar nlpar lb ub
##             (flat)     b                                      
##             (flat)     b mst_stand                            
##         beta(1, 1)   coi                                  0  1
##  gamma(0.01, 0.01)   phi                                  0   
##         beta(1, 1)   zoi                                  0  1
##        source
##       default
##  (vectorized)
##       default
##       default
##       default

Here we see how the model is defined with ext_prop ~ mst_stand, i.e. the extinction proportion is related to the standardized MST length. Then we specify the data and the family or distribution to be used in the model, in this case the Beta distribution. This also includes the logit function needed. You can see all the distributions and several useful examples for brms in the vignettes and its website. A list of the available families is here or in R help (?brmsfamily).

brms is clever in setting out all the bits of the model we need and providing sensible defaults. We can change these prior distributions (i.e. those we start the model with) in the main function using prior as you can see below. Running the model itself uses the same form in the function brm: call the formula, data, and family, then set any priors. Below we also setup brm to sample from the prior, so we can see the before and after, and then some housekeeping on how many jumps we want the MCMC analysis to do. More jumps samples better but takes more time, and the algorithm is clever so that it learns as it goes; thus after a while adding more iterations (iter) doesn’t change the results and are wasted. Getting there quicker is helped by having more chains, which are essentially repeats of the analysis that can be combined, and using more cores on your computer so that you do several of these repeated analyses at the same time.

Run this code block and then we’ll see what the output looks like.

model_family_mst <-
  brm(
    ext_prop ~ mst_stand,
    data = family_mst_scaled,
    family = zero_one_inflated_beta(),
    # prior = prior(normal(0, 10), coef = "mst_stand", class = "b") +
      # prior(normal(0, 10), class = "Intercept"),
    sample_prior = TRUE,
    iter = 4000, chains = 4, cores = 4,
    save_pars = save_pars()
  )
## Compiling Stan program...
## Start sampling

Once the brm function is run, the Stan program is compiled and then the analysis proceeds. If you’re running the same analysis again then it shouldn’t require recompiling and goes straight to the analysis.

summary(model_family_mst)
##  Family: zero_one_inflated_beta 
##   Links: mu = logit; phi = identity; zoi = identity; coi = identity 
## Formula: ext_prop ~ mst_stand 
##    Data: family_mst_scaled (Number of observations: 64) 
##   Draws: 4 chains, each with iter = 4000; warmup = 2000; thin = 1;
##          total post-warmup draws = 8000
## 
## Population-Level Effects: 
##           Estimate Est.Error l-95% CI u-95% CI Rhat Bulk_ESS Tail_ESS
## Intercept     0.02      0.10    -0.18     0.20 1.00     9984     6302
## mst_stand     0.33      0.10     0.13     0.53 1.00    11010     5816
## 
## Family Specific Parameters: 
##     Estimate Est.Error l-95% CI u-95% CI Rhat Bulk_ESS Tail_ESS
## phi     9.06      1.83     5.90    13.01 1.00     8225     5732
## zoi     0.29      0.06     0.19     0.40 1.00    10264     5907
## coi     0.95      0.05     0.82     1.00 1.00     7960     4050
## 
## Draws were sampled using sampling(NUTS). For each parameter, Bulk_ESS
## and Tail_ESS are effective sample size measures, and Rhat is the potential
## scale reduction factor on split chains (at convergence, Rhat = 1).
plot(model_family_mst)

pp_check(model_family_mst, ndraws = 100)

plot(conditional_effects(model_family_mst), points = TRUE)

The last line, conditional_effects plots the relationship between the input and output, i.e. the ‘line of best fit’ between minimum spanning tree and family extinction proportion. This will probably the most interesting and useful. You can use the argument plot = FALSE to save the values separately.

You can make a summary table for the output results with the following.

mst_summary_table <- posterior_summary(model_family_mst) %>%
  as_tibble(rownames = "parameter") %>%
  write_csv("./output/mst_model_summary.csv")
knitr::kable(mst_summary_table, caption = "Summarized parameters of the relationships between geographical spread and extinction proportion at the Cretaceous–Palaeogene Boundary.", digits = 3)
Summarized parameters of the relationships between geographical spread and extinction proportion at the Cretaceous–Palaeogene Boundary.
parameter Estimate Est.Error Q2.5 Q97.5
b_Intercept 0.016 0.096 -0.176 0.204
b_mst_stand 0.328 0.102 0.131 0.529
phi 9.063 1.826 5.899 13.012
zoi 0.287 0.056 0.186 0.404
coi 0.950 0.047 0.825 0.999
prior_Intercept 0.017 4.142 -7.865 8.045
prior_phi 0.858 9.005 0.000 3.741
prior_zoi 0.493 0.288 0.024 0.974
prior_coi 0.504 0.287 0.026 0.976
lprior -8.816 0.219 -9.233 -8.380
lp__ -31.190 1.640 -35.137 -29.003

Species extinctions

Species extinctions are instead measured as a no/yes, coded as 0/1, so we instead use the binomial distribution generalized linear model. The binomial distribution shows the probability of success or failure for a given number of attempts (think coin tosses and getting heads or tails). In our case, the number of attempts is 1: a species can only go extinct once! (This makes it a special case of the binomial distribution called the Bernoulli distribution.) The parameter \(p\) then becomes the probability that the species will go extinct; this is what we’re trying to predict.

\[ E \sim \textrm{Bernoulli} \left( p_i \right) \\ \textrm{logit} \left( p_i \right) = \alpha + \beta_T T_i \\ \alpha \sim \textrm{Normal} \left( 0, 10 \right) \\ \beta_T \sim \textrm{Normal} \left( 0, 10 \right), \]

where \(E\) is whether a species goes extinct or not, \(p\) is the probability of extinction, \(T\) is the average temperature for that species, and \(\alpha\) and \(\beta\) are the coefficients.

In fact, we can go a step further and use all the occurrences rather than grouping by species and using the temperature at each occurrence as the input. This requires a multilevel or hierarchical model. Rather than grouping the family data (and summarizing with a mean value or similar), we instead input the individual occurrences and model each one and the trend across whole species. The model is the same except for the second line:

\[ \textrm{logit} \left( p_i \right) 1= \alpha + \beta_{T[species]} T_i, \]

where \(\beta_{T[species]}\) now indicates the coefficient on a per-species basis. We create our data.

species_temp_scaled <-
  palaeo_coords %>%
  st_drop_geometry() %>%
  filter(rnk == 3) %>%
  left_join(species_extinctions, by = "tna_trimmed") %>%
  mutate(
    tna_trimmed = as_factor(tna_trimmed),
    pocn_temp_scaled = scale(pocn_temp)[, 1]
  ) %>%
  select(tna_trimmed, pocn_temp_scaled, kpg_ext, fml, plng, plat)

Implementing this in brms is similarly not too difficult to do either:

get_prior(
  kpg_ext ~ 1 + (pocn_temp_scaled | tna_trimmed),
  data = species_temp_scaled,
  family = binomial()
)
## Warning: Rows containing NAs were excluded from the model.
##                 prior     class             coef       group resp dpar
##                lkj(1)       cor                                       
##                lkj(1)       cor                  tna_trimmed          
##  student_t(3, 0, 2.5) Intercept                                       
##  student_t(3, 0, 2.5)        sd                                       
##  student_t(3, 0, 2.5)        sd                  tna_trimmed          
##  student_t(3, 0, 2.5)        sd        Intercept tna_trimmed          
##  student_t(3, 0, 2.5)        sd pocn_temp_scaled tna_trimmed          
##  nlpar lb ub       source
##                   default
##              (vectorized)
##                   default
##         0         default
##         0    (vectorized)
##         0    (vectorized)
##         0    (vectorized)

The syntax (pocn_temp_scaled | tna_trimmed) estimates the temperature coefficient for each species grouping. This creates a correlation matrix with the model (lkj(1) in the priors). We then run the model itself. This will be slower than the family-level analysis because it is estimating much more from more data.

model_species_temp <-
  brm(
    # kpg_ext ~ 1 + (pocn_temp_scaled | tna_trimmed),
    kpg_ext ~ 1 + (pocn_temp_scaled | tna_trimmed + fml),
    data = species_temp_scaled,
    family = bernoulli(),
    sample_prior = TRUE,
    iter = 4000, chains = 4, cores = 4,
    save_pars = save_pars()
  )
## Warning: Rows containing NAs were excluded from the model.
## Compiling Stan program...
## Start sampling
## Warning: There were 2 divergent transitions after warmup. See
## https://mc-stan.org/misc/warnings.html#divergent-transitions-after-warmup
## to find out why this is a problem and how to eliminate them.
## Warning: There were 1657 transitions after warmup that exceeded the maximum treedepth. Increase max_treedepth above 10. See
## https://mc-stan.org/misc/warnings.html#maximum-treedepth-exceeded
## Warning: Examine the pairs() plot to diagnose sampling problems

And we can summarize with these.

summary(model_species_temp)
## Warning: There were 2 divergent transitions after warmup. Increasing
## adapt_delta above 0.8 may help. See http://mc-stan.org/misc/
## warnings.html#divergent-transitions-after-warmup
##  Family: bernoulli 
##   Links: mu = logit 
## Formula: kpg_ext ~ 1 + (pocn_temp_scaled | tna_trimmed + fml) 
##    Data: species_temp_scaled (Number of observations: 4533) 
##   Draws: 4 chains, each with iter = 4000; warmup = 2000; thin = 1;
##          total post-warmup draws = 8000
## 
## Group-Level Effects: 
## ~fml (Number of levels: 64) 
##                                 Estimate Est.Error l-95% CI u-95% CI Rhat
## sd(Intercept)                       1.92      1.77     0.07     6.47 1.00
## sd(pocn_temp_scaled)                1.07      1.02     0.03     3.69 1.00
## cor(Intercept,pocn_temp_scaled)     0.05      0.58    -0.94     0.95 1.00
##                                 Bulk_ESS Tail_ESS
## sd(Intercept)                       6174     3153
## sd(pocn_temp_scaled)                4425     3620
## cor(Intercept,pocn_temp_scaled)     8438     4995
## 
## ~tna_trimmed (Number of levels: 299) 
##                                 Estimate Est.Error l-95% CI u-95% CI Rhat
## sd(Intercept)                       1.84      1.70     0.07     6.14 1.00
## sd(pocn_temp_scaled)                1.04      1.01     0.04     3.54 1.00
## cor(Intercept,pocn_temp_scaled)     0.05      0.58    -0.95     0.96 1.00
##                                 Bulk_ESS Tail_ESS
## sd(Intercept)                       5406     3083
## sd(pocn_temp_scaled)                5113     3727
## cor(Intercept,pocn_temp_scaled)     6865     4214
## 
## Population-Level Effects: 
##           Estimate Est.Error l-95% CI u-95% CI Rhat Bulk_ESS Tail_ESS
## Intercept    27.79     21.22    10.35    82.35 1.00     2473     1596
## 
## Draws were sampled using sampling(NUTS). For each parameter, Bulk_ESS
## and Tail_ESS are effective sample size measures, and Rhat is the potential
## scale reduction factor on split chains (at convergence, Rhat = 1).
plot(model_species_temp)

pp_check(model_species_temp, ndraws = 100)

Here’s a more complete summary of the parameters.

temp_summary_table <- posterior_summary(model_species_temp) %>%
  as_tibble(rownames = "parameter") %>%
  write_csv("./output/temp_model_summary.csv")
knitr::kable(temp_summary_table, digits = 3, caption = "Summarized parameter distributions for relationship between ocean surface temperature and species extinction grouped by family.")
Summarized parameter distributions for relationship between ocean surface temperature and species extinction grouped by family.
parameter Estimate Est.Error Q2.5 Q97.5
b_Intercept 27.786 21.219 10.349 82.346
sd_fml__Intercept 1.923 1.767 0.074 6.475
sd_fml__pocn_temp_scaled 1.068 1.015 0.032 3.690
sd_tna_trimmed__Intercept 1.838 1.700 0.066 6.144
sd_tna_trimmed__pocn_temp_scaled 1.037 1.006 0.041 3.545
cor_fml__Intercept__pocn_temp_scaled 0.046 0.577 -0.945 0.947
cor_tna_trimmed__Intercept__pocn_temp_scaled 0.046 0.580 -0.947 0.961
r_fml[Anomiidae,Intercept] 0.049 2.589 -5.446 5.490
r_fml[Antillocaprinidae,Intercept] -0.049 2.671 -5.714 5.298
r_fml[Arcidae,Intercept] 0.024 2.545 -5.398 5.581
r_fml[Arcticidae,Intercept] 0.002 2.564 -5.262 5.222
r_fml[Astartidae,Intercept] 0.011 2.608 -5.686 5.791
r_fml[Bakevelliidae,Intercept] -0.005 2.589 -5.182 5.241
r_fml[Buchiidae,Intercept] 0.006 2.553 -5.381 5.476
r_fml[Cardiidae,Intercept] 0.078 2.562 -5.164 5.636
r_fml[Cardiolariidae,Intercept] 0.018 2.527 -5.542 5.308
r_fml[Carditidae,Intercept] -0.117 2.501 -5.697 4.930
r_fml[Condylocardiidae,Intercept] -0.022 2.642 -5.626 5.387
r_fml[Corbiculidae,Intercept] 0.044 2.651 -5.144 5.758
r_fml[Corbulidae,Intercept] 0.023 2.458 -5.297 5.517
r_fml[Crassatellidae,Intercept] 0.046 2.578 -5.271 5.804
r_fml[Cucullaeidae,Intercept] 0.034 2.559 -5.290 5.459
r_fml[Cuspidariidae,Intercept] 0.030 2.601 -5.300 5.442
r_fml[Dimyidae,Intercept] 0.056 2.617 -5.243 5.338
r_fml[Donacidae,Intercept] -0.048 2.594 -5.624 5.139
r_fml[Entoliidae,Intercept] 0.014 2.682 -5.600 5.542
r_fml[Flemingostreidae,Intercept] 0.026 2.655 -5.306 5.531
r_fml[Glycymerididae,Intercept] 0.081 2.560 -4.927 5.721
r_fml[Gryphaeidae,Intercept] -0.001 2.585 -5.446 5.051
r_fml[Hiatellidae,Intercept] 0.026 2.677 -5.547 5.548
r_fml[Hippuritidae,Intercept] 0.048 2.525 -5.004 5.701
r_fml[Inoceramidae,Intercept] 0.059 2.579 -5.172 5.535
r_fml[Jilinoconchidae,Intercept] 0.013 2.610 -5.266 5.640
r_fml[Lahillidae,Intercept] 0.031 2.589 -5.007 5.385
r_fml[Laternulidae,Intercept] 0.053 2.570 -5.196 5.608
r_fml[Limidae,Intercept] 0.032 2.554 -5.236 5.257
r_fml[Lucinidae,Intercept] -0.012 2.531 -5.434 5.405
r_fml[Mactridae,Intercept] -0.010 2.520 -5.441 5.438
r_fml[Mactromyidae,Intercept] -0.049 2.605 -5.542 5.096
r_fml[Malletiidae,Intercept] 0.039 2.601 -5.110 5.581
r_fml[Megatrigoniidae,Intercept] -0.004 2.594 -5.402 5.324
r_fml[Monopleuridae,Intercept] -0.057 2.502 -5.451 5.204
r_fml[Mytilidae,Intercept] 0.047 2.575 -5.153 5.601
r_fml[Neitheidae,Intercept] 0.033 2.613 -5.264 5.584
r_fml[Nuculanidae,Intercept] 0.015 2.523 -5.205 5.124
r_fml[Nuculidae,Intercept] 0.041 2.567 -5.219 5.364
r_fml[Ostreidae,Intercept] 0.013 2.599 -5.376 5.374
r_fml[Oxytomidae,Intercept] -0.026 2.542 -5.327 5.198
r_fml[Parallelodontidae,Intercept] 0.012 2.520 -5.158 5.299
r_fml[Pectinidae,Intercept] 0.046 2.551 -5.294 5.555
r_fml[Pharidae,Intercept] 0.028 2.410 -5.258 5.081
r_fml[Pholadomyidae,Intercept] 0.079 2.638 -5.287 5.559
r_fml[Pinnidae,Intercept] -0.019 2.549 -5.360 5.350
r_fml[Plagioptychidae,Intercept] 0.053 2.450 -5.318 5.122
r_fml[Pleuromyidae,Intercept] 0.016 2.645 -5.341 5.914
r_fml[Plicatulidae,Intercept] -0.002 2.631 -5.524 5.524
r_fml[Poromyidae,Intercept] -0.018 2.558 -5.503 5.147
r_fml[Propeamussiidae,Intercept] 0.017 2.532 -5.358 5.409
r_fml[Radiolitidae,Intercept] 0.078 2.593 -4.936 5.465
r_fml[Sareptidae,Intercept] -0.024 2.538 -5.595 5.291
r_fml[Spondylidae,Intercept] -0.012 2.761 -5.957 5.554
r_fml[Steinmanellidae,Intercept] -0.021 2.610 -5.324 5.414
r_fml[Tancrediidae,Intercept] 0.006 2.602 -5.341 5.460
r_fml[Tellinidae,Intercept] 0.020 2.558 -5.280 5.501
r_fml[Terquemiidae,Intercept] 0.014 2.645 -5.412 5.395
r_fml[Thyasiridae,Intercept] -0.015 2.606 -5.262 5.503
r_fml[Trechmannellidae,Intercept] 0.050 2.633 -5.386 5.591
r_fml[Trigoniidae,Intercept] 0.023 2.592 -5.215 5.427
r_fml[Unionidae,Intercept] -0.001 2.490 -5.162 5.374
r_fml[Veneridae,Intercept] -0.007 2.584 -5.236 5.389
r_fml[Yoldiidae,Intercept] 0.048 2.604 -5.100 5.677
r_fml[Anomiidae,pocn_temp_scaled] -0.001 1.430 -3.020 3.011
r_fml[Antillocaprinidae,pocn_temp_scaled] -0.015 1.532 -3.136 3.050
r_fml[Arcidae,pocn_temp_scaled] 0.004 1.449 -3.001 3.021
r_fml[Arcticidae,pocn_temp_scaled] -0.014 1.482 -3.036 3.068
r_fml[Astartidae,pocn_temp_scaled] -0.022 1.432 -3.112 2.979
r_fml[Bakevelliidae,pocn_temp_scaled] 0.016 1.496 -3.012 3.166
r_fml[Buchiidae,pocn_temp_scaled] -0.051 1.341 -3.094 2.684
r_fml[Cardiidae,pocn_temp_scaled] 0.016 1.497 -3.019 3.196
r_fml[Cardiolariidae,pocn_temp_scaled] -0.006 1.498 -3.112 3.171
r_fml[Carditidae,pocn_temp_scaled] 0.015 1.397 -2.961 3.035
r_fml[Condylocardiidae,pocn_temp_scaled] 0.018 1.489 -3.034 3.082
r_fml[Corbiculidae,pocn_temp_scaled] -0.002 1.532 -3.224 3.224
r_fml[Corbulidae,pocn_temp_scaled] -0.018 1.447 -3.150 2.960
r_fml[Crassatellidae,pocn_temp_scaled] -0.031 1.483 -3.291 3.001
r_fml[Cucullaeidae,pocn_temp_scaled] 0.011 1.454 -3.028 3.160
r_fml[Cuspidariidae,pocn_temp_scaled] 0.025 1.505 -2.986 3.096
r_fml[Dimyidae,pocn_temp_scaled] -0.011 1.529 -3.206 3.042
r_fml[Donacidae,pocn_temp_scaled] 0.020 1.536 -3.001 3.067
r_fml[Entoliidae,pocn_temp_scaled] -0.056 1.438 -3.291 2.809
r_fml[Flemingostreidae,pocn_temp_scaled] -0.015 1.458 -3.103 3.039
r_fml[Glycymerididae,pocn_temp_scaled] 0.027 1.441 -2.985 3.110
r_fml[Gryphaeidae,pocn_temp_scaled] 0.045 1.466 -2.971 3.215
r_fml[Hiatellidae,pocn_temp_scaled] -0.065 1.374 -3.209 2.762
r_fml[Hippuritidae,pocn_temp_scaled] -0.014 1.418 -3.023 2.815
r_fml[Inoceramidae,pocn_temp_scaled] -0.054 1.397 -3.139 2.791
r_fml[Jilinoconchidae,pocn_temp_scaled] 0.002 1.495 -3.039 3.105
r_fml[Lahillidae,pocn_temp_scaled] -0.027 1.385 -2.984 2.766
r_fml[Laternulidae,pocn_temp_scaled] 0.007 1.473 -3.087 3.069
r_fml[Limidae,pocn_temp_scaled] -0.039 1.401 -3.059 2.830
r_fml[Lucinidae,pocn_temp_scaled] -0.030 1.482 -3.245 3.044
r_fml[Mactridae,pocn_temp_scaled] -0.017 1.440 -3.018 2.978
r_fml[Mactromyidae,pocn_temp_scaled] 0.034 1.447 -2.889 3.264
r_fml[Malletiidae,pocn_temp_scaled] -0.063 1.474 -3.288 2.790
r_fml[Megatrigoniidae,pocn_temp_scaled] 0.000 1.500 -3.101 3.133
r_fml[Monopleuridae,pocn_temp_scaled] -0.004 1.456 -3.180 3.065
r_fml[Mytilidae,pocn_temp_scaled] 0.019 1.468 -2.953 3.093
r_fml[Neitheidae,pocn_temp_scaled] 0.014 1.522 -3.051 3.074
r_fml[Nuculanidae,pocn_temp_scaled] 0.002 1.475 -3.192 2.986
r_fml[Nuculidae,pocn_temp_scaled] -0.051 1.408 -3.116 2.645
r_fml[Ostreidae,pocn_temp_scaled] 0.020 1.445 -2.988 3.193
r_fml[Oxytomidae,pocn_temp_scaled] -0.035 1.435 -3.170 2.937
r_fml[Parallelodontidae,pocn_temp_scaled] -0.016 1.438 -2.946 2.951
r_fml[Pectinidae,pocn_temp_scaled] -0.006 1.473 -3.048 3.079
r_fml[Pharidae,pocn_temp_scaled] 0.005 1.404 -2.937 3.021
r_fml[Pholadomyidae,pocn_temp_scaled] 0.010 1.450 -2.906 3.042
r_fml[Pinnidae,pocn_temp_scaled] -0.002 1.446 -3.048 3.022
r_fml[Plagioptychidae,pocn_temp_scaled] -0.070 1.410 -3.317 2.640
r_fml[Pleuromyidae,pocn_temp_scaled] 0.011 1.463 -3.060 3.065
r_fml[Plicatulidae,pocn_temp_scaled] 0.016 1.496 -3.000 3.180
r_fml[Poromyidae,pocn_temp_scaled] -0.014 1.425 -3.146 3.009
r_fml[Propeamussiidae,pocn_temp_scaled] 0.020 1.488 -2.848 3.224
r_fml[Radiolitidae,pocn_temp_scaled] -0.097 1.425 -3.272 2.579
r_fml[Sareptidae,pocn_temp_scaled] 0.027 1.454 -2.966 3.208
r_fml[Spondylidae,pocn_temp_scaled] 0.046 1.530 -3.044 3.325
r_fml[Steinmanellidae,pocn_temp_scaled] -0.005 1.438 -2.904 3.022
r_fml[Tancrediidae,pocn_temp_scaled] 0.006 1.457 -2.918 3.066
r_fml[Tellinidae,pocn_temp_scaled] 0.006 1.446 -3.021 3.063
r_fml[Terquemiidae,pocn_temp_scaled] 0.003 1.536 -3.211 3.194
r_fml[Thyasiridae,pocn_temp_scaled] -0.040 1.400 -3.149 2.811
r_fml[Trechmannellidae,pocn_temp_scaled] 0.016 1.431 -3.174 3.111
r_fml[Trigoniidae,pocn_temp_scaled] -0.032 1.377 -2.984 2.759
r_fml[Unionidae,pocn_temp_scaled] -0.035 1.414 -3.298 2.957
r_fml[Veneridae,pocn_temp_scaled] -0.030 1.424 -3.057 2.942
r_fml[Yoldiidae,pocn_temp_scaled] -0.037 1.519 -3.284 3.032
r_tna_trimmed[idonearca.capax,Intercept] 0.018 2.455 -5.136 5.283
r_tna_trimmed[crenella.elegantula,Intercept] -0.027 2.547 -5.403 5.049
r_tna_trimmed[tenuipteria.argentea,Intercept] 0.048 2.460 -5.027 5.421
r_tna_trimmed[camptonectes.bubonis,Intercept] 0.031 2.525 -5.274 5.534
r_tna_trimmed[anomia.ornata,Intercept] 0.042 2.591 -5.368 5.285
r_tna_trimmed[limatula.acutilineata,Intercept] -0.015 2.396 -5.219 5.285
r_tna_trimmed[gryphaeostrea.vomer,Intercept] 0.003 2.505 -5.184 5.419
r_tna_trimmed[crassatella.vadosa,Intercept] 0.058 2.513 -4.978 5.443
r_tna_trimmed[scambula.perplana,Intercept] -0.016 2.515 -5.371 5.339
r_tna_trimmed[leptosolen.biplicata,Intercept] 0.010 2.445 -5.249 5.183
r_tna_trimmed[aenona.eufaulensis,Intercept] -0.010 2.537 -5.481 5.317
r_tna_trimmed[veniella.conradi,Intercept] -0.002 2.541 -5.089 5.445
r_tna_trimmed[caestocorbula.crassiplica,Intercept] -0.006 2.493 -5.334 5.100
r_tna_trimmed[anatimya.anteradiata,Intercept] 0.020 2.547 -5.157 5.292
r_tna_trimmed[liopistha.protexta,Intercept] 0.003 2.548 -5.145 5.034
r_tna_trimmed[brevicardium.fragile,Intercept] -0.047 2.544 -5.530 5.274
r_tna_trimmed[crenella.serica,Intercept] 0.025 2.428 -5.152 5.257
r_tna_trimmed[exogyra.costata,Intercept] 0.041 2.539 -5.224 5.455
r_tna_trimmed[pholadomya.occidentalis,Intercept] -0.083 2.392 -5.382 4.868
r_tna_trimmed[pinna.laqueata,Intercept] -0.034 2.504 -5.647 5.173
r_tna_trimmed[lima.pelagica,Intercept] 0.022 2.479 -5.133 5.497
r_tna_trimmed[pinna.cretacea,Intercept] 0.039 2.485 -5.263 5.420
r_tna_trimmed[entolium.membranaceum,Intercept] 0.041 2.572 -5.220 5.358
r_tna_trimmed[camptonectes.virgatus,Intercept] 0.091 2.482 -4.724 5.503
r_tna_trimmed[dhondtichlamys.pulchellus,Intercept] -0.018 2.558 -5.443 5.185
r_tna_trimmed[merklinia.variabilis,Intercept] 0.038 2.557 -5.374 5.528
r_tna_trimmed[neithea.sexcostata,Intercept] -0.003 2.486 -5.177 5.255
r_tna_trimmed[spondylus.fimbriatus,Intercept] 0.050 2.467 -5.227 5.454
r_tna_trimmed[newaagia.obliquus,Intercept] 0.005 2.522 -5.283 5.404
r_tna_trimmed[atreta.nilssoni,Intercept] 0.016 2.514 -5.294 5.321
r_tna_trimmed[plagiostoma.hoperi,Intercept] -0.030 2.530 -5.306 5.316
r_tna_trimmed[limatula.decussata,Intercept] -0.016 2.526 -5.301 5.566
r_tna_trimmed[pycnodonte.vesicularis,Intercept] 0.043 2.508 -5.212 5.383
r_tna_trimmed[agerostrea.ungulatus,Intercept] 0.001 2.459 -5.348 5.187
r_tna_trimmed[portlandia.arctica,Intercept] 0.003 2.542 -5.456 5.441
r_tna_trimmed[barbatia.geinitzi,Intercept] -0.005 2.570 -5.277 5.267
r_tna_trimmed[inoceramus.balticus,Intercept] -0.031 2.397 -5.175 4.989
r_tna_trimmed[endocostea.regularis,Intercept] -0.039 2.496 -5.411 4.759
r_tna_trimmed[neithea.striatocostata,Intercept] -0.046 2.582 -5.471 5.260
r_tna_trimmed[propeamussium.inversum,Intercept] -0.030 2.428 -5.265 5.058
r_tna_trimmed[syncyclonema.haeggi,Intercept] -0.005 2.512 -5.409 5.380
r_tna_trimmed[syncyclonema.nilsoni,Intercept] 0.027 2.440 -5.050 5.400
r_tna_trimmed[syncyclonema.semiplicata,Intercept] -0.038 2.449 -5.310 5.176
r_tna_trimmed[hyotissa.semiplana,Intercept] -0.035 2.546 -5.480 5.409
r_tna_trimmed[buchia.crassicollis,Intercept] 0.024 2.425 -4.948 5.316
r_tna_trimmed[pseudoptera.coerulescens,Intercept] 0.034 2.542 -5.352 5.419
r_tna_trimmed[gryphaeostrea.lateralis,Intercept] -0.005 2.545 -5.232 5.421
r_tna_trimmed[acutostrea.incurva,Intercept] 0.003 2.419 -5.035 5.132
r_tna_trimmed[curvostrea.tevesthensis,Intercept] 0.042 2.481 -5.019 5.278
r_tna_trimmed[agerostrea.falcata,Intercept] -0.039 2.614 -5.424 5.384
r_tna_trimmed[modiolus.aequalis,Intercept] 0.031 2.484 -4.929 5.396
r_tna_trimmed[neithea.quinquecostata,Intercept] -0.013 2.477 -5.278 5.131
r_tna_trimmed[amphidonte.pliciferum,Intercept] 0.015 2.550 -5.167 5.572
r_tna_trimmed[biradiolites.lameracensis,Intercept] -0.007 2.410 -5.260 5.017
r_tna_trimmed[radiolites.spongicola,Intercept] 0.054 2.564 -5.267 5.294
r_tna_trimmed[trigonarca.angolensis,Intercept] -0.015 2.516 -5.308 5.387
r_tna_trimmed[pseudocucullaea.lens,Intercept] 0.016 2.441 -5.103 5.183
r_tna_trimmed[plicatula.ibo,Intercept] 0.060 2.505 -4.820 5.543
r_tna_trimmed[cataceramus.bantu,Intercept] 0.013 2.465 -5.196 5.024
r_tna_trimmed[veniella.undata,Intercept] -0.010 2.494 -5.354 5.340
r_tna_trimmed[anofia.aro,Intercept] 0.034 2.595 -5.131 5.527
r_tna_trimmed[cardium.subperobliquum,Intercept] 0.006 2.487 -5.213 5.422
r_tna_trimmed[nuculopsis.elongata,Intercept] -0.011 2.470 -5.323 5.135
r_tna_trimmed[curvostrea.rouvillei,Intercept] -0.016 2.455 -5.176 5.126
r_tna_trimmed[crassatella.arcacea,Intercept] 0.021 2.512 -5.326 5.638
r_tna_trimmed[panopea.regularis,Intercept] -0.044 2.429 -5.312 5.316
r_tna_trimmed[pleuromya.elongata,Intercept] 0.012 2.440 -5.203 5.227
r_tna_trimmed[calva.varians,Intercept] 0.049 2.494 -5.147 5.261
r_tna_trimmed[panzacorbula.pozo,Intercept] -0.012 2.566 -5.386 5.247
r_tna_trimmed[glycymeris.apletos,Intercept] -0.017 2.576 -5.442 5.471
r_tna_trimmed[popenoella.hemphilli,Intercept] 0.013 2.542 -5.320 5.266
r_tna_trimmed[trinacria.cor,Intercept] 0.011 2.420 -4.954 5.126
r_tna_trimmed[inoceramus.fibrosus,Intercept] 0.031 2.491 -5.332 5.362
r_tna_trimmed[nucula.cancellata,Intercept] -0.029 2.590 -5.381 4.978
r_tna_trimmed[nucula.planimarginata,Intercept] 0.037 2.468 -5.166 5.322
r_tna_trimmed[pteria.nebrascana,Intercept] 0.027 2.520 -5.237 5.316
r_tna_trimmed[exogyra.overwegi,Intercept] 0.066 2.466 -5.017 5.308
r_tna_trimmed[panopea.clausa,Intercept] 0.038 2.517 -4.975 5.212
r_tna_trimmed[nucula.suboblonga,Intercept] -0.003 2.462 -5.486 5.333
r_tna_trimmed[seymourtula.antarctica,Intercept] -0.030 2.524 -5.469 5.030
r_tna_trimmed[conchocele.townsendi,Intercept] -0.016 2.479 -5.257 5.007
r_tna_trimmed[cubitostrea.tecticosta,Intercept] -0.006 2.499 -5.332 5.433
r_tna_trimmed[lima.reticulata,Intercept] 0.057 2.448 -4.879 5.359
r_tna_trimmed[pterotrigonia.thoracica,Intercept] -0.020 2.400 -5.081 4.977
r_tna_trimmed[trachycardium.eufaulensis,Intercept] 0.049 2.475 -5.084 5.297
r_tna_trimmed[anomia.argentaria,Intercept] 0.009 2.543 -5.333 5.467
r_tna_trimmed[bathytormus.pteropsis,Intercept] 0.038 2.456 -5.206 5.414
r_tna_trimmed[caestocorbula.crassaplica,Intercept] 0.023 2.490 -5.206 5.257
r_tna_trimmed[corbula.monmouthensis,Intercept] 0.030 2.407 -5.018 5.299
r_tna_trimmed[liothyris.carolinensis,Intercept] 0.036 2.525 -5.277 5.485
r_tna_trimmed[nemodon.grandis,Intercept] -0.023 2.444 -5.070 5.177
r_tna_trimmed[praeleda.compar,Intercept] -0.026 2.582 -5.531 5.130
r_tna_trimmed[nymphalucina.linearia,Intercept] 0.020 2.398 -5.059 4.979
r_tna_trimmed[pterotrigonia.eufaulensis,Intercept] -0.031 2.528 -5.326 5.051
r_tna_trimmed[cucullaea.littlei,Intercept] 0.058 2.520 -5.174 5.190
r_tna_trimmed[lopha.mesenterica,Intercept] -0.014 2.538 -5.406 5.178
r_tna_trimmed[ostrea.plumosa,Intercept] -0.016 2.511 -5.263 5.256
r_tna_trimmed[cuna.texana,Intercept] -0.019 2.647 -5.555 5.361
r_tna_trimmed[etea.carolinensis,Intercept] 0.023 2.429 -5.131 5.275
r_tna_trimmed[plicatula.tetrica,Intercept] 0.065 2.515 -5.186 5.671
r_tna_trimmed[gervilliopsis.ensiformis,Intercept] -0.011 2.554 -5.359 5.366
r_tna_trimmed[nucula.cunifrons,Intercept] 0.007 2.411 -5.067 5.077
r_tna_trimmed[chlamys.cretosus,Intercept] -0.029 2.461 -5.263 5.013
r_tna_trimmed[lima.sellardsi,Intercept] -0.014 2.626 -5.044 5.255
r_tna_trimmed[cuspidaria.grandis,Intercept] 0.010 2.535 -5.112 5.229
r_tna_trimmed[idonearca.powersi,Intercept] 0.027 2.480 -4.915 5.175
r_tna_trimmed[lima.geronimoensis,Intercept] -0.057 2.464 -5.425 5.007
r_tna_trimmed[solyma.elliptica,Intercept] 0.007 2.550 -5.377 5.205
r_tna_trimmed[lucina.parvilineata,Intercept] -0.014 2.533 -5.253 5.374
r_tna_trimmed[syncyclonema.kingi,Intercept] -0.026 2.467 -5.119 5.331
r_tna_trimmed[nuculana.rostratruncata,Intercept] 0.038 2.509 -5.508 5.392
r_tna_trimmed[sourimis.georgiana,Intercept] -0.004 2.537 -5.291 5.307
r_tna_trimmed[lima.kimbroensis,Intercept] -0.049 2.599 -5.378 5.012
r_tna_trimmed[cuspidaria.grovensis,Intercept] -0.015 2.479 -5.231 5.234
r_tna_trimmed[ostrea.congesta,Intercept] 0.020 2.628 -5.465 5.424
r_tna_trimmed[cuneolus.tippana,Intercept] -0.017 2.534 -5.462 5.173
r_tna_trimmed[agerostrea.mesenterica,Intercept] 0.011 2.520 -5.242 5.322
r_tna_trimmed[astarte.similis,Intercept] 0.046 2.444 -5.115 5.197
r_tna_trimmed[corbula.paracrassa,Intercept] 0.012 2.531 -5.097 5.406
r_tna_trimmed[plicatula.ferryi,Intercept] 0.015 2.381 -5.068 5.062
r_tna_trimmed[barbatia.carolinensis,Intercept] 0.027 2.555 -5.337 5.313
r_tna_trimmed[crassatella.hodgei,Intercept] 0.017 2.462 -5.326 5.186
r_tna_trimmed[nucula.stantoni,Intercept] -0.004 2.512 -5.402 5.279
r_tna_trimmed[mytiloides.striatoconcentricus,Intercept] -0.022 2.417 -5.226 5.003
r_tna_trimmed[amphidonte.pyrenaicum,Intercept] 0.009 2.496 -5.292 5.344
r_tna_trimmed[nucula.ovata,Intercept] 0.011 2.508 -5.200 5.251
r_tna_trimmed[inoperna.flagellifera,Intercept] -0.007 2.477 -5.206 5.132
r_tna_trimmed[gervillia.solenoidea,Intercept] 0.043 2.466 -5.056 5.387
r_tna_trimmed[syncyclonema.gamsensis,Intercept] -0.029 2.512 -5.122 5.134
r_tna_trimmed[lyropecten.acuteplicatus,Intercept] 0.016 2.449 -5.291 5.208
r_tna_trimmed[lyropecten.campaniensis,Intercept] -0.031 2.497 -5.399 5.200
r_tna_trimmed[mimachlamys.cretosa,Intercept] 0.062 2.476 -4.811 5.494
r_tna_trimmed[limatula.ovata,Intercept] 0.027 2.542 -5.204 5.485
r_tna_trimmed[gryphaeostrea.canaliculata,Intercept] -0.045 2.536 -5.713 5.435
r_tna_trimmed[lucina.subnumismalis,Intercept] 0.005 2.410 -5.049 5.142
r_tna_trimmed[granocardium.productum,Intercept] -0.025 2.542 -5.510 5.421
r_tna_trimmed[pholadomya.esmarki,Intercept] 0.028 2.565 -4.946 5.324
r_tna_trimmed[pholadomya.decussata,Intercept] 0.024 2.442 -5.138 5.375
r_tna_trimmed[septifer.lineatus,Intercept] 0.012 2.421 -5.333 5.132
r_tna_trimmed[mimachlamys.denticulata,Intercept] 0.023 2.655 -5.237 5.403
r_tna_trimmed[hippurites.cornucopiae,Intercept] 0.005 2.492 -5.407 5.395
r_tna_trimmed[ostrea.diluviana,Intercept] -0.036 2.553 -5.524 5.199
r_tna_trimmed[anomia.pseudoradiata,Intercept] -0.009 2.548 -5.265 5.246
r_tna_trimmed[ostrea.merceyi,Intercept] -0.021 2.425 -5.239 5.112
r_tna_trimmed[malayomaorica.malayomaorica,Intercept] 0.018 2.444 -5.097 5.173
r_tna_trimmed[caribbea.muellerriedi,Intercept] 0.038 2.451 -4.940 5.224
r_tna_trimmed[liostrea.lehmanni,Intercept] 0.006 2.487 -5.256 5.322
r_tna_trimmed[plicatounio.naktongensis,Intercept] -0.034 2.469 -5.367 5.076
r_tna_trimmed[neithea.regularis,Intercept] 0.003 2.426 -5.168 5.113
r_tna_trimmed[crassatella.rothii,Intercept] -0.050 2.432 -5.513 5.117
r_tna_trimmed[modiolus.carolinensis,Intercept] -0.008 2.486 -5.117 5.239
r_tna_trimmed[ostrea.sechura,Intercept] 0.015 2.442 -5.188 5.359
r_tna_trimmed[perucardia.brueggeni,Intercept] 0.046 2.473 -5.106 5.495
r_tna_trimmed[ambigostrea.villei,Intercept] -0.059 2.404 -5.392 5.037
r_tna_trimmed[australoneilo.gracilis,Intercept] -0.002 2.592 -5.381 5.149
r_tna_trimmed[lahillia.larseni,Intercept] -0.001 2.461 -5.190 5.218
r_tna_trimmed[radiolites.macroplicatus,Intercept] 0.027 2.496 -5.084 5.293
r_tna_trimmed[chiapasella.radiolitiformis,Intercept] 0.046 2.575 -5.263 5.481
r_tna_trimmed[antillocaprina.trilobata,Intercept] -0.009 2.514 -5.307 5.150
r_tna_trimmed[hippuritella.lapeirousei,Intercept] 0.046 2.767 -5.180 5.625
r_tna_trimmed[trochoceramus.tricostatus,Intercept] 0.026 2.414 -5.152 5.056
r_tna_trimmed[pacitrigonia.patagonica,Intercept] 0.033 2.587 -5.198 5.341
r_tna_trimmed[bournonia.excavata,Intercept] 0.045 2.452 -5.055 5.383
r_tna_trimmed[joufia.reticulata,Intercept] 0.035 2.619 -5.335 5.362
r_tna_trimmed[hippurites.colliciatus,Intercept] 0.025 2.540 -5.085 5.147
r_tna_trimmed[mitrocaprina.bulgarica,Intercept] -0.014 2.421 -5.049 5.075
r_tna_trimmed[radiolitella.maestrichtiana,Intercept] -0.031 2.494 -5.506 4.925
r_tna_trimmed[pironaea.slavonica,Intercept] 0.044 2.511 -5.104 5.402
r_tna_trimmed[medeella.zignana,Intercept] 0.006 2.590 -5.479 5.243
r_tna_trimmed[ceratostreon.flabellatum,Intercept] 0.014 2.554 -5.137 5.598
r_tna_trimmed[bournonia.bournoni,Intercept] 0.014 2.485 -5.257 5.501
r_tna_trimmed[mitrocaprina.tschoppi,Intercept] -0.012 2.558 -5.416 5.029
r_tna_trimmed[parastroma.guitarti,Intercept] 0.038 2.546 -5.278 5.485
r_tna_trimmed[grammatodon.sulcatinus,Intercept] 0.042 2.499 -5.099 5.285
r_tna_trimmed[pinna.freneixae,Intercept] 0.004 2.459 -5.116 5.253
r_tna_trimmed[praeradiolites.hoeninghausi,Intercept] -0.016 2.494 -5.314 5.395
r_tna_trimmed[katzeria.hercegovinaensis,Intercept] -0.019 2.449 -5.397 5.159
r_tna_trimmed[biradiolites.ara,Intercept] 0.058 2.493 -5.102 5.474
r_tna_trimmed[favus.antei,Intercept] -0.009 2.477 -5.183 5.159
r_tna_trimmed[lima.canalifera,Intercept] -0.015 2.503 -5.055 5.067
r_tna_trimmed[lima.woodsi,Intercept] -0.013 2.439 -5.420 5.091
r_tna_trimmed[oistotrigonia.waiparensis,Intercept] -0.008 2.424 -5.177 5.220
r_tna_trimmed[yoldia.cupressensis,Intercept] 0.018 2.461 -5.272 5.205
r_tna_trimmed[yoldia.mcconnelli,Intercept] -0.016 2.401 -5.051 5.051
r_tna_trimmed[panope.mclearni,Intercept] -0.053 2.459 -5.292 4.843
r_tna_trimmed[protocardia.subquadrata,Intercept] 0.037 2.520 -5.261 5.509
r_tna_trimmed[pholadomya.cupressensis,Intercept] 0.038 2.485 -5.354 5.254
r_tna_trimmed[corbula.sprouli,Intercept] 0.003 2.437 -5.294 5.327
r_tna_trimmed[tellina.cupressensis,Intercept] 0.012 2.617 -5.228 5.393
r_tna_trimmed[tancredia.americana,Intercept] 0.009 2.517 -5.425 5.209
r_tna_trimmed[cardium.spillmani,Intercept] 0.003 2.439 -5.272 5.095
r_tna_trimmed[oistotrigonia.pygoscelium,Intercept] 0.058 2.487 -5.070 5.311
r_tna_trimmed[tenea.inflata,Intercept] -0.005 2.467 -5.181 5.109
r_tna_trimmed[glycymerita.veatchii,Intercept] 0.012 2.504 -5.249 5.213
r_tna_trimmed[macrocallista.cordata,Intercept] -0.070 2.411 -5.210 5.121
r_tna_trimmed[inoceramus.stanislausensis,Intercept] -0.028 2.504 -5.561 5.072
r_tna_trimmed[acila.demessa,Intercept] 0.045 2.438 -5.041 5.441
r_tna_trimmed[calva.peninsularis,Intercept] 0.002 2.463 -5.198 5.234
r_tna_trimmed[opis.triangulata,Intercept] 0.049 2.451 -5.054 5.380
r_tna_trimmed[cymbophora.triangulata,Intercept] -0.037 2.468 -5.564 4.993
r_tna_trimmed[glycymerita.banosensis,Intercept] -0.015 2.598 -5.452 5.218
r_tna_trimmed[calva.nitida,Intercept] -0.059 2.463 -5.481 4.857
r_tna_trimmed[meekia.sella,Intercept] 0.024 2.500 -5.243 5.187
r_tna_trimmed[mytilus.quadratus,Intercept] -0.019 2.471 -5.358 5.152
r_tna_trimmed[adelodonax.altus,Intercept] 0.058 2.553 -5.267 5.373
r_tna_trimmed[legumen.ooides,Intercept] 0.035 2.480 -5.236 5.527
r_tna_trimmed[parallelodon.brewerianus,Intercept] -0.002 2.496 -5.450 5.401
r_tna_trimmed[praeradiolites.ciryi,Intercept] -0.004 2.577 -5.539 5.344
r_tna_trimmed[biradiolites.mooretownensis,Intercept] -0.014 2.455 -5.365 5.219
r_tna_trimmed[dictyoptychus.morgani,Intercept] 0.018 2.453 -5.064 5.397
r_tna_trimmed[inoceramus.chicoensis,Intercept] 0.020 2.499 -5.254 5.235
r_tna_trimmed[arca.mcnairyensis,Intercept] -0.007 2.498 -5.397 5.429
r_tna_trimmed[glycymeris.microsulci,Intercept] 0.010 2.438 -5.218 5.033
r_tna_trimmed[pecten.argillensis,Intercept] 0.046 2.570 -5.354 5.364
r_tna_trimmed[lithophaga.conchafodentis,Intercept] -0.006 2.537 -5.343 5.263
r_tna_trimmed[cardium.dumosum,Intercept] 0.017 2.491 -5.072 5.198
r_tna_trimmed[granocardium.tenuistriatum,Intercept] -0.046 2.473 -5.396 5.127
r_tna_trimmed[protocardia.stantoni,Intercept] 0.040 2.501 -4.959 5.174
r_tna_trimmed[corbula.crassiplica,Intercept] -0.012 2.432 -4.962 5.305
r_tna_trimmed[corbulamella.suffalciata,Intercept] 0.004 2.493 -5.434 5.420
r_tna_trimmed[clisocolus.moreauensis,Intercept] -0.004 2.422 -5.355 5.092
r_tna_trimmed[granocardium.whitei,Intercept] -0.030 2.580 -5.321 5.361
r_tna_trimmed[laluzia.armini,Intercept] -0.013 2.459 -5.117 5.194
r_tna_trimmed[opis.rosarioensis,Intercept] 0.024 2.569 -5.458 5.191
r_tna_trimmed[inoceramus.galoi,Intercept] 0.047 2.598 -5.246 5.144
r_tna_trimmed[retroceramus.haasti,Intercept] -0.036 2.502 -5.488 5.192
r_tna_trimmed[spisula.berryi,Intercept] -0.048 2.647 -5.638 5.044
r_tna_trimmed[monopleura.falgasi,Intercept] -0.022 2.504 -5.431 5.119
r_tna_trimmed[monopleura.figolina,Intercept] -0.002 2.549 -5.357 5.351
r_tna_trimmed[biradiolites.osensis,Intercept] -0.018 2.484 -5.373 5.055
r_tna_trimmed[biradiolites.lumbricalis,Intercept] -0.004 2.587 -5.294 5.318
r_tna_trimmed[vaccinites.vesiculosus,Intercept] -0.020 2.484 -5.350 5.081
r_tna_trimmed[biradiolites.fissicostatus,Intercept] -0.010 2.472 -5.016 4.953
r_tna_trimmed[praeradiolites.subtoucasi,Intercept] -0.038 2.606 -5.563 5.121
r_tna_trimmed[lapeirousia.laskarevi,Intercept] 0.037 2.477 -4.976 5.423
r_tna_trimmed[lapeirousia.plana,Intercept] -0.026 2.503 -5.615 5.071
r_tna_trimmed[lapeirousia.zitteli,Intercept] 0.012 2.484 -5.170 5.269
r_tna_trimmed[vaccinites.sulcatus,Intercept] 0.018 2.477 -5.033 5.093
r_tna_trimmed[cucullaea.thevestensis,Intercept] 0.015 2.475 -5.373 5.310
r_tna_trimmed[indogrammatodon.vancouverensis,Intercept] 0.025 2.569 -5.450 5.484
r_tna_trimmed[callistalox.fragilis,Intercept] -0.004 2.453 -5.121 5.326
r_tna_trimmed[lyriochlamys.traskii,Intercept] 0.029 2.502 -5.270 5.483
r_tna_trimmed[clisocolus.dubius,Intercept] -0.015 2.469 -5.412 5.151
r_tna_trimmed[crassatella.mercedensis,Intercept] -0.008 2.431 -5.301 5.114
r_tna_trimmed[crassatella.conradiana,Intercept] 0.006 2.506 -5.140 5.234
r_tna_trimmed[pholadomya.diegoensis,Intercept] 0.007 2.423 -5.047 5.196
r_tna_trimmed[acila.princeps,Intercept] 0.010 2.493 -5.145 5.319
r_tna_trimmed[oscillopha.figari,Intercept] 0.018 2.488 -5.229 5.304
r_tna_trimmed[agerostrea.rouxi,Intercept] -0.005 2.463 -5.176 5.107
r_tna_trimmed[ambigostrea.tripolitana,Intercept] -0.001 2.403 -4.915 4.959
r_tna_trimmed[liostrea.prima,Intercept] 0.016 2.495 -5.149 5.515
r_tna_trimmed[calva.bowersiana,Intercept] 0.005 2.391 -5.332 5.188
r_tna_trimmed[inoceramus.pembertoni,Intercept] 0.006 2.522 -5.459 5.372
r_tna_trimmed[inoceramus.whitneyi,Intercept] -0.049 2.543 -5.383 4.970
r_tna_trimmed[cymbophora.popenoei,Intercept] 0.056 2.463 -5.289 5.320
r_tna_trimmed[pholadomya.subelongata,Intercept] -0.042 2.431 -5.238 4.984
r_tna_trimmed[nucula.solitaria,Intercept] -0.001 2.548 -5.084 5.187
r_tna_trimmed[clisocolus.cordatus,Intercept] -0.016 2.428 -5.390 5.325
r_tna_trimmed[nemodon.vancouverensis,Intercept] -0.010 2.497 -5.252 5.228
r_tna_trimmed[jilinoconcha.songhuaensis,Intercept] -0.010 2.542 -5.414 5.285
r_tna_trimmed[plicatounio.hunanensis,Intercept] 0.012 2.532 -5.155 5.501
r_tna_trimmed[baidunoconcha.fuyuensis,Intercept] -0.017 2.535 -5.510 5.267
r_tna_trimmed[lucina.colusaensis,Intercept] -0.023 2.498 -5.361 5.313
r_tna_trimmed[nymphalucina.panochensis,Intercept] 0.007 2.417 -5.095 5.077
r_tna_trimmed[idonearca.deatsvillensis,Intercept] 0.038 2.571 -5.153 5.313
r_tna_trimmed[trigonia.castrovillensis,Intercept] 0.025 2.510 -5.301 5.451
r_tna_trimmed[pterotrigonia.evansana,Intercept] -0.030 2.482 -5.498 5.049
r_tna_trimmed[cymbophora.gabbiana,Intercept] 0.045 2.584 -5.170 5.509
r_tna_trimmed[pachycardium.coronaensis,Intercept] 0.043 2.500 -4.853 5.484
r_tna_trimmed[nicaisolopha.nicaisei,Intercept] 0.008 2.453 -4.891 5.222
r_tna_trimmed[astarte.awensis,Intercept] 0.067 2.519 -4.965 5.278
r_tna_trimmed[inoceramus.coxi,Intercept] -0.008 2.516 -5.473 5.221
r_tna_trimmed[venericardia.crossensis,Intercept] 0.014 2.472 -5.099 5.278
r_tna_trimmed[agelasina.plenodonta,Intercept] 0.025 2.401 -4.904 5.261
r_tna_trimmed[aphrodina.andersoni,Intercept] -0.029 2.567 -5.542 5.111
r_tna_trimmed[costagyra.olisiponensis,Intercept] -0.001 2.500 -5.227 5.420
r_tna_trimmed[cymbophora.ashburnerii,Intercept] 0.027 2.528 -5.175 5.223
r_tna_trimmed[cucullaea.calabaza,Intercept] 0.042 2.467 -5.027 5.171
r_tna_trimmed[parallelodon.bremneri,Intercept] -0.007 2.584 -5.253 5.275
r_tna_trimmed[lima.appressa,Intercept] -0.018 2.535 -5.333 5.276
r_tna_trimmed[mytilus.pauperculus,Intercept] 0.000 2.410 -5.084 5.265
r_tna_trimmed[remondia.shastensis,Intercept] -0.050 2.509 -5.304 5.168
r_tna_trimmed[yaadia.leana,Intercept] 0.011 2.466 -4.992 5.080
r_tna_trimmed[trigonia.inezana,Intercept] 0.026 2.492 -5.130 5.276
r_tna_trimmed[calva.taffi,Intercept] -0.047 2.385 -5.143 4.938
r_tna_trimmed[inoceramus.subundatus,Intercept] -0.037 2.525 -5.303 5.252
r_tna_trimmed[trigonia.churchi,Intercept] 0.003 2.454 -5.456 5.271
r_tna_trimmed[laluzia.peruviana,Intercept] -0.045 2.434 -5.143 5.106
r_tna_trimmed[calva.marina,Intercept] 0.027 2.474 -5.163 5.333
r_tna_trimmed[calva.baptisia,Intercept] -0.067 2.409 -5.191 5.013
r_tna_trimmed[calva.crassa,Intercept] -0.027 2.507 -5.378 5.095
r_tna_trimmed[caryocorbula.lomana,Intercept] -0.017 2.361 -5.310 5.012
r_tna_trimmed[eoursivivas.cultriformis,Intercept] 0.020 2.550 -5.145 5.387
r_tna_trimmed[xenomytilus.fons,Intercept] 0.012 2.534 -5.161 5.190
r_tna_trimmed[loxo.quintense,Intercept] -0.037 2.407 -5.193 4.913
r_tna_trimmed[astarte.subnana,Intercept] 0.006 2.483 -5.307 5.348
r_tna_trimmed[leda.scutula,Intercept] -0.044 2.517 -5.320 5.181
r_tna_trimmed[crassatella.bosquetiana,Intercept] 0.011 2.559 -5.054 5.583
r_tna_trimmed[roudairia.squiresi,Intercept] 0.002 2.538 -5.415 5.355
r_tna_trimmed[idonearca.capax,pocn_temp_scaled] 0.017 1.415 -2.993 2.846
r_tna_trimmed[crenella.elegantula,pocn_temp_scaled] -0.037 1.434 -3.073 2.960
r_tna_trimmed[tenuipteria.argentea,pocn_temp_scaled] 0.028 1.473 -2.843 3.037
r_tna_trimmed[camptonectes.bubonis,pocn_temp_scaled] -0.015 1.440 -3.005 2.831
r_tna_trimmed[anomia.ornata,pocn_temp_scaled] -0.003 1.365 -2.809 2.838
r_tna_trimmed[limatula.acutilineata,pocn_temp_scaled] 0.014 1.468 -2.908 3.068
r_tna_trimmed[gryphaeostrea.vomer,pocn_temp_scaled] 0.000 1.422 -2.903 2.875
r_tna_trimmed[crassatella.vadosa,pocn_temp_scaled] 0.011 1.423 -2.831 3.046
r_tna_trimmed[scambula.perplana,pocn_temp_scaled] 0.013 1.451 -2.838 3.101
r_tna_trimmed[leptosolen.biplicata,pocn_temp_scaled] 0.010 1.386 -2.724 2.816
r_tna_trimmed[aenona.eufaulensis,pocn_temp_scaled] -0.028 1.517 -3.076 2.934
r_tna_trimmed[veniella.conradi,pocn_temp_scaled] 0.022 1.420 -2.902 2.902
r_tna_trimmed[caestocorbula.crassiplica,pocn_temp_scaled] 0.027 1.452 -2.843 3.204
r_tna_trimmed[anatimya.anteradiata,pocn_temp_scaled] -0.009 1.398 -2.891 2.829
r_tna_trimmed[liopistha.protexta,pocn_temp_scaled] -0.005 1.383 -2.799 2.914
r_tna_trimmed[brevicardium.fragile,pocn_temp_scaled] -0.015 1.440 -3.092 2.974
r_tna_trimmed[crenella.serica,pocn_temp_scaled] 0.010 1.378 -2.768 3.039
r_tna_trimmed[exogyra.costata,pocn_temp_scaled] 0.002 1.461 -3.063 2.942
r_tna_trimmed[pholadomya.occidentalis,pocn_temp_scaled] -0.014 1.447 -3.010 2.791
r_tna_trimmed[pinna.laqueata,pocn_temp_scaled] 0.019 1.439 -2.968 2.943
r_tna_trimmed[lima.pelagica,pocn_temp_scaled] 0.042 1.516 -2.748 3.174
r_tna_trimmed[pinna.cretacea,pocn_temp_scaled] 0.002 1.460 -2.780 2.918
r_tna_trimmed[entolium.membranaceum,pocn_temp_scaled] -0.049 1.422 -3.125 2.783
r_tna_trimmed[camptonectes.virgatus,pocn_temp_scaled] 0.020 1.377 -2.769 2.797
r_tna_trimmed[dhondtichlamys.pulchellus,pocn_temp_scaled] 0.008 1.468 -2.974 2.895
r_tna_trimmed[merklinia.variabilis,pocn_temp_scaled] -0.036 1.383 -2.954 2.737
r_tna_trimmed[neithea.sexcostata,pocn_temp_scaled] -0.012 1.468 -3.123 2.926
r_tna_trimmed[spondylus.fimbriatus,pocn_temp_scaled] -0.003 1.434 -3.002 2.994
r_tna_trimmed[newaagia.obliquus,pocn_temp_scaled] 0.018 1.502 -2.928 3.043
r_tna_trimmed[atreta.nilssoni,pocn_temp_scaled] -0.023 1.473 -2.783 2.834
r_tna_trimmed[plagiostoma.hoperi,pocn_temp_scaled] -0.011 1.389 -2.898 2.879
r_tna_trimmed[limatula.decussata,pocn_temp_scaled] -0.006 1.418 -2.798 3.004
r_tna_trimmed[pycnodonte.vesicularis,pocn_temp_scaled] -0.006 1.459 -2.845 3.076
r_tna_trimmed[agerostrea.ungulatus,pocn_temp_scaled] -0.014 1.499 -2.954 3.000
r_tna_trimmed[portlandia.arctica,pocn_temp_scaled] -0.001 1.411 -2.991 2.979
r_tna_trimmed[barbatia.geinitzi,pocn_temp_scaled] -0.018 1.478 -3.032 2.998
r_tna_trimmed[inoceramus.balticus,pocn_temp_scaled] -0.083 1.449 -3.233 2.608
r_tna_trimmed[endocostea.regularis,pocn_temp_scaled] 0.017 1.472 -2.791 3.017
r_tna_trimmed[neithea.striatocostata,pocn_temp_scaled] 0.008 1.467 -2.883 2.997
r_tna_trimmed[propeamussium.inversum,pocn_temp_scaled] 0.005 1.452 -3.046 3.029
r_tna_trimmed[syncyclonema.haeggi,pocn_temp_scaled] -0.032 1.460 -3.032 2.851
r_tna_trimmed[syncyclonema.nilsoni,pocn_temp_scaled] -0.032 1.439 -3.033 2.779
r_tna_trimmed[syncyclonema.semiplicata,pocn_temp_scaled] 0.003 1.430 -2.901 2.988
r_tna_trimmed[hyotissa.semiplana,pocn_temp_scaled] -0.027 1.426 -3.146 2.933
r_tna_trimmed[buchia.crassicollis,pocn_temp_scaled] -0.044 1.398 -2.880 2.641
r_tna_trimmed[pseudoptera.coerulescens,pocn_temp_scaled] 0.000 1.497 -2.927 2.922
r_tna_trimmed[gryphaeostrea.lateralis,pocn_temp_scaled] -0.025 1.497 -3.092 2.786
r_tna_trimmed[acutostrea.incurva,pocn_temp_scaled] -0.016 1.393 -2.823 2.823
r_tna_trimmed[curvostrea.tevesthensis,pocn_temp_scaled] 0.018 1.410 -2.874 2.955
r_tna_trimmed[agerostrea.falcata,pocn_temp_scaled] -0.007 1.443 -2.886 2.931
r_tna_trimmed[modiolus.aequalis,pocn_temp_scaled] 0.014 1.478 -2.994 2.885
r_tna_trimmed[neithea.quinquecostata,pocn_temp_scaled] -0.002 1.408 -2.915 2.860
r_tna_trimmed[amphidonte.pliciferum,pocn_temp_scaled] 0.022 1.418 -3.066 3.011
r_tna_trimmed[biradiolites.lameracensis,pocn_temp_scaled] -0.023 1.341 -2.895 2.651
r_tna_trimmed[radiolites.spongicola,pocn_temp_scaled] 0.009 1.349 -2.925 2.808
r_tna_trimmed[trigonarca.angolensis,pocn_temp_scaled] 0.006 1.395 -2.891 2.981
r_tna_trimmed[pseudocucullaea.lens,pocn_temp_scaled] -0.022 1.436 -2.822 2.882
r_tna_trimmed[plicatula.ibo,pocn_temp_scaled] -0.006 1.460 -2.987 2.915
r_tna_trimmed[cataceramus.bantu,pocn_temp_scaled] 0.016 1.426 -2.758 2.939
r_tna_trimmed[veniella.undata,pocn_temp_scaled] 0.010 1.418 -2.931 2.991
r_tna_trimmed[anofia.aro,pocn_temp_scaled] -0.016 1.471 -2.990 2.765
r_tna_trimmed[cardium.subperobliquum,pocn_temp_scaled] -0.006 1.477 -2.780 2.978
r_tna_trimmed[nuculopsis.elongata,pocn_temp_scaled] -0.014 1.412 -2.870 2.890
r_tna_trimmed[curvostrea.rouvillei,pocn_temp_scaled] -0.025 1.456 -2.968 2.943
r_tna_trimmed[crassatella.arcacea,pocn_temp_scaled] -0.042 1.464 -3.004 2.984
r_tna_trimmed[panopea.regularis,pocn_temp_scaled] 0.007 1.405 -2.815 2.869
r_tna_trimmed[pleuromya.elongata,pocn_temp_scaled] -0.005 1.474 -2.969 2.864
r_tna_trimmed[calva.varians,pocn_temp_scaled] -0.011 1.467 -2.976 2.843
r_tna_trimmed[panzacorbula.pozo,pocn_temp_scaled] -0.001 1.418 -2.725 2.884
r_tna_trimmed[glycymeris.apletos,pocn_temp_scaled] -0.024 1.479 -3.058 2.796
r_tna_trimmed[popenoella.hemphilli,pocn_temp_scaled] 0.007 1.443 -2.943 2.971
r_tna_trimmed[trinacria.cor,pocn_temp_scaled] 0.000 1.463 -2.980 2.994
r_tna_trimmed[inoceramus.fibrosus,pocn_temp_scaled] 0.011 1.423 -2.802 2.910
r_tna_trimmed[nucula.cancellata,pocn_temp_scaled] 0.001 1.487 -2.903 2.863
r_tna_trimmed[nucula.planimarginata,pocn_temp_scaled] -0.011 1.453 -2.905 2.943
r_tna_trimmed[pteria.nebrascana,pocn_temp_scaled] 0.022 1.423 -2.814 3.013
r_tna_trimmed[exogyra.overwegi,pocn_temp_scaled] -0.018 1.416 -2.970 2.818
r_tna_trimmed[panopea.clausa,pocn_temp_scaled] -0.015 1.389 -2.775 2.770
r_tna_trimmed[nucula.suboblonga,pocn_temp_scaled] -0.046 1.379 -2.922 2.718
r_tna_trimmed[seymourtula.antarctica,pocn_temp_scaled] -0.021 1.398 -2.924 2.719
r_tna_trimmed[conchocele.townsendi,pocn_temp_scaled] -0.064 1.349 -2.986 2.634
r_tna_trimmed[cubitostrea.tecticosta,pocn_temp_scaled] -0.004 1.372 -2.783 2.967
r_tna_trimmed[lima.reticulata,pocn_temp_scaled] 0.022 1.404 -2.904 2.995
r_tna_trimmed[pterotrigonia.thoracica,pocn_temp_scaled] -0.025 1.454 -3.006 2.955
r_tna_trimmed[trachycardium.eufaulensis,pocn_temp_scaled] 0.018 1.497 -2.793 2.835
r_tna_trimmed[anomia.argentaria,pocn_temp_scaled] 0.007 1.436 -2.897 3.010
r_tna_trimmed[bathytormus.pteropsis,pocn_temp_scaled] -0.014 1.504 -3.142 2.865
r_tna_trimmed[caestocorbula.crassaplica,pocn_temp_scaled] 0.012 1.428 -2.955 2.873
r_tna_trimmed[corbula.monmouthensis,pocn_temp_scaled] 0.004 1.445 -3.043 2.899
r_tna_trimmed[liothyris.carolinensis,pocn_temp_scaled] 0.032 1.554 -2.830 3.074
r_tna_trimmed[nemodon.grandis,pocn_temp_scaled] -0.008 1.463 -2.813 2.952
r_tna_trimmed[praeleda.compar,pocn_temp_scaled] -0.002 1.472 -3.077 3.003
r_tna_trimmed[nymphalucina.linearia,pocn_temp_scaled] 0.023 1.487 -2.900 3.160
r_tna_trimmed[pterotrigonia.eufaulensis,pocn_temp_scaled] 0.005 1.506 -2.734 3.086
r_tna_trimmed[cucullaea.littlei,pocn_temp_scaled] 0.014 1.417 -2.796 2.855
r_tna_trimmed[lopha.mesenterica,pocn_temp_scaled] -0.020 1.451 -3.073 2.842
r_tna_trimmed[ostrea.plumosa,pocn_temp_scaled] 0.002 1.417 -3.033 3.026
r_tna_trimmed[cuna.texana,pocn_temp_scaled] -0.015 1.544 -3.037 2.938
r_tna_trimmed[etea.carolinensis,pocn_temp_scaled] 0.006 1.461 -2.862 3.079
r_tna_trimmed[plicatula.tetrica,pocn_temp_scaled] 0.029 1.488 -2.924 3.178
r_tna_trimmed[gervilliopsis.ensiformis,pocn_temp_scaled] -0.025 1.426 -2.931 2.788
r_tna_trimmed[nucula.cunifrons,pocn_temp_scaled] -0.013 1.383 -2.892 2.844
r_tna_trimmed[chlamys.cretosus,pocn_temp_scaled] -0.003 1.445 -2.918 3.014
r_tna_trimmed[lima.sellardsi,pocn_temp_scaled] 0.020 1.504 -2.972 3.122
r_tna_trimmed[cuspidaria.grandis,pocn_temp_scaled] 0.017 1.366 -2.844 2.881
r_tna_trimmed[idonearca.powersi,pocn_temp_scaled] -0.001 1.437 -2.865 2.969
r_tna_trimmed[lima.geronimoensis,pocn_temp_scaled] 0.006 1.427 -2.863 2.914
r_tna_trimmed[solyma.elliptica,pocn_temp_scaled] 0.015 1.407 -2.810 3.067
r_tna_trimmed[lucina.parvilineata,pocn_temp_scaled] 0.020 1.438 -2.857 2.926
r_tna_trimmed[syncyclonema.kingi,pocn_temp_scaled] -0.013 1.435 -2.885 2.847
r_tna_trimmed[nuculana.rostratruncata,pocn_temp_scaled] 0.018 1.401 -2.839 2.972
r_tna_trimmed[sourimis.georgiana,pocn_temp_scaled] 0.000 1.426 -2.777 2.923
r_tna_trimmed[lima.kimbroensis,pocn_temp_scaled] 0.006 1.417 -2.950 2.965
r_tna_trimmed[cuspidaria.grovensis,pocn_temp_scaled] 0.020 1.460 -2.906 3.048
r_tna_trimmed[ostrea.congesta,pocn_temp_scaled] 0.005 1.457 -2.894 3.092
r_tna_trimmed[cuneolus.tippana,pocn_temp_scaled] 0.012 1.542 -2.903 3.259
r_tna_trimmed[agerostrea.mesenterica,pocn_temp_scaled] 0.029 1.485 -2.996 3.178
r_tna_trimmed[astarte.similis,pocn_temp_scaled] 0.025 1.479 -2.885 3.156
r_tna_trimmed[corbula.paracrassa,pocn_temp_scaled] 0.023 1.414 -2.923 3.063
r_tna_trimmed[plicatula.ferryi,pocn_temp_scaled] -0.001 1.468 -2.972 2.991
r_tna_trimmed[barbatia.carolinensis,pocn_temp_scaled] -0.012 1.412 -3.085 3.008
r_tna_trimmed[crassatella.hodgei,pocn_temp_scaled] -0.014 1.451 -3.114 2.913
r_tna_trimmed[nucula.stantoni,pocn_temp_scaled] 0.020 1.467 -2.925 3.085
r_tna_trimmed[mytiloides.striatoconcentricus,pocn_temp_scaled] -0.029 1.447 -3.091 2.891
r_tna_trimmed[amphidonte.pyrenaicum,pocn_temp_scaled] 0.022 1.480 -2.898 3.014
r_tna_trimmed[nucula.ovata,pocn_temp_scaled] 0.056 1.531 -2.736 3.006
r_tna_trimmed[inoperna.flagellifera,pocn_temp_scaled] 0.002 1.461 -3.024 3.029
r_tna_trimmed[gervillia.solenoidea,pocn_temp_scaled] -0.013 1.418 -2.945 2.855
r_tna_trimmed[syncyclonema.gamsensis,pocn_temp_scaled] -0.005 1.423 -2.944 2.920
r_tna_trimmed[lyropecten.acuteplicatus,pocn_temp_scaled] -0.021 1.427 -2.873 2.847
r_tna_trimmed[lyropecten.campaniensis,pocn_temp_scaled] 0.015 1.408 -2.893 3.018
r_tna_trimmed[mimachlamys.cretosa,pocn_temp_scaled] 0.015 1.410 -2.905 2.933
r_tna_trimmed[limatula.ovata,pocn_temp_scaled] 0.012 1.424 -2.939 3.066
r_tna_trimmed[gryphaeostrea.canaliculata,pocn_temp_scaled] 0.000 1.441 -3.026 2.872
r_tna_trimmed[lucina.subnumismalis,pocn_temp_scaled] 0.003 1.450 -3.007 2.858
r_tna_trimmed[granocardium.productum,pocn_temp_scaled] 0.026 1.474 -2.877 3.005
r_tna_trimmed[pholadomya.esmarki,pocn_temp_scaled] 0.006 1.492 -2.901 2.857
r_tna_trimmed[pholadomya.decussata,pocn_temp_scaled] 0.006 1.478 -2.879 3.069
r_tna_trimmed[septifer.lineatus,pocn_temp_scaled] -0.011 1.402 -2.947 2.791
r_tna_trimmed[mimachlamys.denticulata,pocn_temp_scaled] 0.002 1.504 -3.095 3.151
r_tna_trimmed[hippurites.cornucopiae,pocn_temp_scaled] 0.004 1.410 -2.878 2.879
r_tna_trimmed[ostrea.diluviana,pocn_temp_scaled] 0.017 1.399 -2.857 2.838
r_tna_trimmed[anomia.pseudoradiata,pocn_temp_scaled] -0.002 1.428 -2.846 2.890
r_tna_trimmed[ostrea.merceyi,pocn_temp_scaled] -0.008 1.390 -2.735 2.875
r_tna_trimmed[malayomaorica.malayomaorica,pocn_temp_scaled] -0.013 1.478 -2.972 2.864
r_tna_trimmed[caribbea.muellerriedi,pocn_temp_scaled] 0.027 1.447 -2.822 3.137
r_tna_trimmed[liostrea.lehmanni,pocn_temp_scaled] 0.023 1.404 -2.734 2.958
r_tna_trimmed[plicatounio.naktongensis,pocn_temp_scaled] -0.019 1.505 -3.062 2.972
r_tna_trimmed[neithea.regularis,pocn_temp_scaled] 0.055 1.423 -2.833 3.064
r_tna_trimmed[crassatella.rothii,pocn_temp_scaled] 0.032 1.523 -2.819 3.137
r_tna_trimmed[modiolus.carolinensis,pocn_temp_scaled] 0.005 1.388 -2.861 2.896
r_tna_trimmed[ostrea.sechura,pocn_temp_scaled] 0.005 1.399 -2.888 2.900
r_tna_trimmed[perucardia.brueggeni,pocn_temp_scaled] 0.009 1.397 -2.930 2.931
r_tna_trimmed[ambigostrea.villei,pocn_temp_scaled] 0.019 1.410 -2.906 2.938
r_tna_trimmed[australoneilo.gracilis,pocn_temp_scaled] 0.006 1.372 -2.917 2.856
r_tna_trimmed[lahillia.larseni,pocn_temp_scaled] -0.057 1.389 -3.000 2.646
r_tna_trimmed[radiolites.macroplicatus,pocn_temp_scaled] -0.027 1.381 -2.915 2.726
r_tna_trimmed[chiapasella.radiolitiformis,pocn_temp_scaled] 0.003 1.420 -2.861 3.082
r_tna_trimmed[antillocaprina.trilobata,pocn_temp_scaled] -0.016 1.449 -2.969 2.886
r_tna_trimmed[hippuritella.lapeirousei,pocn_temp_scaled] -0.021 1.500 -3.117 2.912
r_tna_trimmed[trochoceramus.tricostatus,pocn_temp_scaled] -0.015 1.469 -3.020 2.909
r_tna_trimmed[pacitrigonia.patagonica,pocn_temp_scaled] 0.004 1.438 -2.837 2.888
r_tna_trimmed[bournonia.excavata,pocn_temp_scaled] -0.013 1.457 -3.007 2.924
r_tna_trimmed[joufia.reticulata,pocn_temp_scaled] 0.036 1.451 -2.810 3.017
r_tna_trimmed[hippurites.colliciatus,pocn_temp_scaled] -0.007 1.441 -3.019 3.071
r_tna_trimmed[mitrocaprina.bulgarica,pocn_temp_scaled] -0.004 1.424 -2.791 2.968
r_tna_trimmed[radiolitella.maestrichtiana,pocn_temp_scaled] 0.022 1.399 -2.824 2.994
r_tna_trimmed[pironaea.slavonica,pocn_temp_scaled] 0.026 1.459 -2.810 3.063
r_tna_trimmed[medeella.zignana,pocn_temp_scaled] -0.012 1.457 -3.015 2.923
r_tna_trimmed[ceratostreon.flabellatum,pocn_temp_scaled] -0.014 1.385 -2.951 2.741
r_tna_trimmed[bournonia.bournoni,pocn_temp_scaled] -0.060 1.414 -3.102 2.584
r_tna_trimmed[mitrocaprina.tschoppi,pocn_temp_scaled] -0.040 1.397 -2.944 2.719
r_tna_trimmed[parastroma.guitarti,pocn_temp_scaled] -0.063 1.385 -3.052 2.639
r_tna_trimmed[grammatodon.sulcatinus,pocn_temp_scaled] -0.002 1.467 -3.140 2.931
r_tna_trimmed[pinna.freneixae,pocn_temp_scaled] 0.022 1.426 -2.722 2.866
r_tna_trimmed[praeradiolites.hoeninghausi,pocn_temp_scaled] -0.030 1.479 -2.972 2.929
r_tna_trimmed[katzeria.hercegovinaensis,pocn_temp_scaled] -0.045 1.478 -3.043 2.860
r_tna_trimmed[biradiolites.ara,pocn_temp_scaled] -0.024 1.470 -2.998 2.901
r_tna_trimmed[favus.antei,pocn_temp_scaled] -0.024 1.347 -2.865 2.749
r_tna_trimmed[lima.canalifera,pocn_temp_scaled] -0.046 1.416 -2.956 2.779
r_tna_trimmed[lima.woodsi,pocn_temp_scaled] -0.009 1.451 -2.983 2.805
r_tna_trimmed[oistotrigonia.waiparensis,pocn_temp_scaled] 0.010 1.392 -2.854 2.792
r_tna_trimmed[yoldia.cupressensis,pocn_temp_scaled] -0.033 1.458 -2.948 2.967
r_tna_trimmed[yoldia.mcconnelli,pocn_temp_scaled] 0.000 1.399 -2.892 2.824
r_tna_trimmed[panope.mclearni,pocn_temp_scaled] -0.005 1.405 -2.968 2.893
r_tna_trimmed[protocardia.subquadrata,pocn_temp_scaled] -0.012 1.463 -3.097 2.898
r_tna_trimmed[pholadomya.cupressensis,pocn_temp_scaled] -0.023 1.425 -2.933 2.886
r_tna_trimmed[corbula.sprouli,pocn_temp_scaled] 0.019 1.442 -2.907 3.065
r_tna_trimmed[tellina.cupressensis,pocn_temp_scaled] 0.020 1.456 -2.772 3.018
r_tna_trimmed[tancredia.americana,pocn_temp_scaled] -0.001 1.424 -2.982 2.878
r_tna_trimmed[cardium.spillmani,pocn_temp_scaled] -0.009 1.414 -2.975 2.886
r_tna_trimmed[oistotrigonia.pygoscelium,pocn_temp_scaled] -0.032 1.390 -3.039 2.774
r_tna_trimmed[tenea.inflata,pocn_temp_scaled] 0.003 1.503 -2.877 2.903
r_tna_trimmed[glycymerita.veatchii,pocn_temp_scaled] 0.010 1.442 -2.950 2.893
r_tna_trimmed[macrocallista.cordata,pocn_temp_scaled] 0.017 1.447 -2.939 3.085
r_tna_trimmed[inoceramus.stanislausensis,pocn_temp_scaled] 0.021 1.492 -2.904 2.983
r_tna_trimmed[acila.demessa,pocn_temp_scaled] 0.038 1.463 -2.932 3.125
r_tna_trimmed[calva.peninsularis,pocn_temp_scaled] -0.006 1.473 -3.034 2.973
r_tna_trimmed[opis.triangulata,pocn_temp_scaled] -0.022 1.441 -3.023 2.787
r_tna_trimmed[cymbophora.triangulata,pocn_temp_scaled] 0.020 1.415 -2.965 3.137
r_tna_trimmed[glycymerita.banosensis,pocn_temp_scaled] -0.023 1.425 -2.951 2.755
r_tna_trimmed[calva.nitida,pocn_temp_scaled] -0.002 1.421 -3.029 2.944
r_tna_trimmed[meekia.sella,pocn_temp_scaled] 0.019 1.430 -2.832 2.972
r_tna_trimmed[mytilus.quadratus,pocn_temp_scaled] -0.043 1.471 -3.003 2.824
r_tna_trimmed[adelodonax.altus,pocn_temp_scaled] -0.019 1.475 -2.994 2.896
r_tna_trimmed[legumen.ooides,pocn_temp_scaled] 0.033 1.406 -2.894 3.008
r_tna_trimmed[parallelodon.brewerianus,pocn_temp_scaled] 0.043 1.391 -2.787 3.053
r_tna_trimmed[praeradiolites.ciryi,pocn_temp_scaled] -0.001 1.481 -3.028 2.956
r_tna_trimmed[biradiolites.mooretownensis,pocn_temp_scaled] 0.009 1.418 -2.801 2.893
r_tna_trimmed[dictyoptychus.morgani,pocn_temp_scaled] -0.002 1.403 -2.949 2.919
r_tna_trimmed[inoceramus.chicoensis,pocn_temp_scaled] 0.004 1.428 -2.873 2.925
r_tna_trimmed[arca.mcnairyensis,pocn_temp_scaled] 0.005 1.419 -2.689 3.051
r_tna_trimmed[glycymeris.microsulci,pocn_temp_scaled] 0.033 1.423 -2.779 2.942
r_tna_trimmed[pecten.argillensis,pocn_temp_scaled] 0.019 1.455 -2.910 3.095
r_tna_trimmed[lithophaga.conchafodentis,pocn_temp_scaled] 0.009 1.465 -2.821 2.974
r_tna_trimmed[cardium.dumosum,pocn_temp_scaled] -0.016 1.455 -3.089 2.905
r_tna_trimmed[granocardium.tenuistriatum,pocn_temp_scaled] 0.004 1.513 -2.949 2.998
r_tna_trimmed[protocardia.stantoni,pocn_temp_scaled] 0.045 1.483 -2.781 3.208
r_tna_trimmed[corbula.crassiplica,pocn_temp_scaled] -0.011 1.451 -2.971 2.905
r_tna_trimmed[corbulamella.suffalciata,pocn_temp_scaled] -0.007 1.445 -2.907 2.861
r_tna_trimmed[clisocolus.moreauensis,pocn_temp_scaled] 0.015 1.475 -2.984 2.976
r_tna_trimmed[granocardium.whitei,pocn_temp_scaled] -0.015 1.514 -3.034 2.998
r_tna_trimmed[laluzia.armini,pocn_temp_scaled] 0.013 1.518 -2.886 3.098
r_tna_trimmed[opis.rosarioensis,pocn_temp_scaled] 0.010 1.429 -2.906 2.999
r_tna_trimmed[inoceramus.galoi,pocn_temp_scaled] -0.011 1.417 -2.971 2.990
r_tna_trimmed[retroceramus.haasti,pocn_temp_scaled] -0.011 1.420 -3.041 2.976
r_tna_trimmed[spisula.berryi,pocn_temp_scaled] -0.004 1.418 -2.934 2.875
r_tna_trimmed[monopleura.falgasi,pocn_temp_scaled] 0.016 1.453 -2.810 2.818
r_tna_trimmed[monopleura.figolina,pocn_temp_scaled] 0.013 1.383 -2.775 2.817
r_tna_trimmed[biradiolites.osensis,pocn_temp_scaled] 0.016 1.415 -2.917 2.933
r_tna_trimmed[biradiolites.lumbricalis,pocn_temp_scaled] -0.013 1.438 -2.967 2.857
r_tna_trimmed[vaccinites.vesiculosus,pocn_temp_scaled] -0.024 1.401 -2.922 2.790
r_tna_trimmed[biradiolites.fissicostatus,pocn_temp_scaled] 0.004 1.397 -2.893 3.062
r_tna_trimmed[praeradiolites.subtoucasi,pocn_temp_scaled] -0.003 1.452 -2.930 2.930
r_tna_trimmed[lapeirousia.laskarevi,pocn_temp_scaled] 0.019 1.494 -2.782 2.725
r_tna_trimmed[lapeirousia.plana,pocn_temp_scaled] -0.041 1.416 -3.192 2.740
r_tna_trimmed[lapeirousia.zitteli,pocn_temp_scaled] 0.036 1.422 -2.745 3.176
r_tna_trimmed[vaccinites.sulcatus,pocn_temp_scaled] -0.022 1.503 -3.220 3.034
r_tna_trimmed[cucullaea.thevestensis,pocn_temp_scaled] -0.032 1.459 -2.963 2.708
r_tna_trimmed[indogrammatodon.vancouverensis,pocn_temp_scaled] 0.015 1.437 -2.841 2.966
r_tna_trimmed[callistalox.fragilis,pocn_temp_scaled] -0.010 1.489 -3.076 3.015
r_tna_trimmed[lyriochlamys.traskii,pocn_temp_scaled] 0.017 1.452 -2.909 2.982
r_tna_trimmed[clisocolus.dubius,pocn_temp_scaled] -0.016 1.455 -2.900 2.945
r_tna_trimmed[crassatella.mercedensis,pocn_temp_scaled] -0.004 1.436 -2.830 2.833
r_tna_trimmed[crassatella.conradiana,pocn_temp_scaled] -0.025 1.413 -2.943 2.649
r_tna_trimmed[pholadomya.diegoensis,pocn_temp_scaled] -0.007 1.472 -2.920 2.946
r_tna_trimmed[acila.princeps,pocn_temp_scaled] -0.025 1.419 -2.843 2.888
r_tna_trimmed[oscillopha.figari,pocn_temp_scaled] -0.006 1.403 -2.809 2.868
r_tna_trimmed[agerostrea.rouxi,pocn_temp_scaled] 0.001 1.436 -2.925 3.036
r_tna_trimmed[ambigostrea.tripolitana,pocn_temp_scaled] -0.008 1.365 -2.962 2.780
r_tna_trimmed[liostrea.prima,pocn_temp_scaled] 0.009 1.428 -2.880 3.077
r_tna_trimmed[calva.bowersiana,pocn_temp_scaled] 0.046 1.403 -2.729 3.003
r_tna_trimmed[inoceramus.pembertoni,pocn_temp_scaled] -0.006 1.508 -3.165 2.976
r_tna_trimmed[inoceramus.whitneyi,pocn_temp_scaled] 0.021 1.447 -2.946 2.907
r_tna_trimmed[cymbophora.popenoei,pocn_temp_scaled] 0.037 1.442 -2.948 3.104
r_tna_trimmed[pholadomya.subelongata,pocn_temp_scaled] -0.025 1.464 -2.937 2.776
r_tna_trimmed[nucula.solitaria,pocn_temp_scaled] -0.053 1.464 -3.177 2.824
r_tna_trimmed[clisocolus.cordatus,pocn_temp_scaled] 0.001 1.464 -2.964 2.872
r_tna_trimmed[nemodon.vancouverensis,pocn_temp_scaled] -0.004 1.420 -2.918 3.050
r_tna_trimmed[jilinoconcha.songhuaensis,pocn_temp_scaled] 0.010 1.478 -2.997 2.945
r_tna_trimmed[plicatounio.hunanensis,pocn_temp_scaled] -0.014 1.377 -2.918 2.968
r_tna_trimmed[baidunoconcha.fuyuensis,pocn_temp_scaled] -0.011 1.474 -2.970 2.948
r_tna_trimmed[lucina.colusaensis,pocn_temp_scaled] 0.011 1.408 -2.819 2.915
r_tna_trimmed[nymphalucina.panochensis,pocn_temp_scaled] -0.007 1.378 -2.928 2.916
r_tna_trimmed[idonearca.deatsvillensis,pocn_temp_scaled] 0.020 1.468 -2.849 3.000
r_tna_trimmed[trigonia.castrovillensis,pocn_temp_scaled] 0.004 1.422 -2.815 3.035
r_tna_trimmed[pterotrigonia.evansana,pocn_temp_scaled] 0.004 1.402 -2.782 2.910
r_tna_trimmed[cymbophora.gabbiana,pocn_temp_scaled] 0.010 1.480 -2.966 2.988
r_tna_trimmed[pachycardium.coronaensis,pocn_temp_scaled] -0.014 1.486 -2.966 2.898
r_tna_trimmed[nicaisolopha.nicaisei,pocn_temp_scaled] 0.013 1.404 -2.782 2.930
r_tna_trimmed[astarte.awensis,pocn_temp_scaled] -0.008 1.412 -2.889 2.934
r_tna_trimmed[inoceramus.coxi,pocn_temp_scaled] -0.003 1.409 -2.771 2.979
r_tna_trimmed[venericardia.crossensis,pocn_temp_scaled] 0.008 1.500 -2.806 3.072
r_tna_trimmed[agelasina.plenodonta,pocn_temp_scaled] 0.010 1.473 -2.877 3.062
r_tna_trimmed[aphrodina.andersoni,pocn_temp_scaled] -0.006 1.466 -3.088 2.866
r_tna_trimmed[costagyra.olisiponensis,pocn_temp_scaled] -0.011 1.432 -2.981 3.006
r_tna_trimmed[cymbophora.ashburnerii,pocn_temp_scaled] -0.028 1.388 -2.902 2.725
r_tna_trimmed[cucullaea.calabaza,pocn_temp_scaled] -0.005 1.427 -2.964 2.888
r_tna_trimmed[parallelodon.bremneri,pocn_temp_scaled] 0.005 1.443 -2.925 2.924
r_tna_trimmed[lima.appressa,pocn_temp_scaled] 0.048 1.493 -2.846 3.179
r_tna_trimmed[mytilus.pauperculus,pocn_temp_scaled] -0.018 1.400 -2.969 2.713
r_tna_trimmed[remondia.shastensis,pocn_temp_scaled] -0.024 1.463 -3.025 3.004
r_tna_trimmed[yaadia.leana,pocn_temp_scaled] -0.014 1.405 -2.874 2.904
r_tna_trimmed[trigonia.inezana,pocn_temp_scaled] -0.007 1.468 -2.954 2.853
r_tna_trimmed[calva.taffi,pocn_temp_scaled] -0.010 1.422 -2.872 2.872
r_tna_trimmed[inoceramus.subundatus,pocn_temp_scaled] 0.007 1.451 -3.040 3.093
r_tna_trimmed[trigonia.churchi,pocn_temp_scaled] 0.037 1.496 -2.831 3.028
r_tna_trimmed[laluzia.peruviana,pocn_temp_scaled] -0.006 1.396 -2.803 2.847
r_tna_trimmed[calva.marina,pocn_temp_scaled] -0.008 1.446 -2.938 2.894
r_tna_trimmed[calva.baptisia,pocn_temp_scaled] -0.015 1.455 -2.991 2.875
r_tna_trimmed[calva.crassa,pocn_temp_scaled] 0.020 1.422 -2.997 3.051
r_tna_trimmed[caryocorbula.lomana,pocn_temp_scaled] 0.019 1.475 -2.788 2.984
r_tna_trimmed[eoursivivas.cultriformis,pocn_temp_scaled] -0.003 1.437 -2.924 2.909
r_tna_trimmed[xenomytilus.fons,pocn_temp_scaled] 0.022 1.403 -2.724 2.959
r_tna_trimmed[loxo.quintense,pocn_temp_scaled] 0.020 1.453 -2.857 3.127
r_tna_trimmed[astarte.subnana,pocn_temp_scaled] 0.043 1.425 -2.754 3.108
r_tna_trimmed[leda.scutula,pocn_temp_scaled] 0.008 1.473 -2.980 2.946
r_tna_trimmed[crassatella.bosquetiana,pocn_temp_scaled] 0.020 1.411 -2.856 2.883
r_tna_trimmed[roudairia.squiresi,pocn_temp_scaled] -0.001 1.450 -2.937 2.947
prior_Intercept -0.029 4.581 -7.737 7.678
prior_sd_fml 2.769 3.202 0.094 10.629
prior_cor_fml -0.006 0.576 -0.948 0.948
prior_sd_tna_trimmed 2.736 2.977 0.087 10.455
prior_cor_tna_trimmed 0.006 0.580 -0.954 0.949
lprior -16.338 2.879 -23.234 -12.268
lp__ -1047.703 19.146 -1086.547 -1010.717

It may not appear different to the family run above, but noticed under the summary that there are 200 levels in the group-level effects: these are the coefficients for each species.

It may also be worth grouping by family too with kpg_ext ~ 1 + (pocn_temp_scaled | tna_trimmed | fml) or kpg_ext ~ 1 + (pocn_temp_scaled | tna_trimmed + fml). Have a look at this this document and ?brmsformula for a description of the formula syntax that brms uses.

More advanced plotting

The summary plots above give some good starting formation, but more detailed plotting is needed to fully understand the output. This is where the bayesplot package comes in: it holds many useful functions for easily plotting the output of brms and other Stan outputs. Have a look at this link for more examples.

Posterior intervals

Posterior intervals are probably the most useful outputs. These show the range of the output coefficients and their mean values. In other words, these are the outputs we’d want to see to tell whether there is a strong relationship between out predictor and response. The relative size can also tell whether certain species might be more strongly affected. In each case1, we first pull out the results, or draws from the model object, then use a function from bayesplot to plot the results.

posterior <- as_draws_array(model_species_temp)

mcmc_intervals(posterior, pars = vars(!matches("prior|lp__|b_|sd_|cor_")))

ggsave(file = "./fig/model-species-family-intervals.pdf", height = 80, limitsize = FALSE)
## Saving 7 x 80 in image

The parameters are estimated for all 200 or so species, hence the not very useful plot. Also, because some of the values are large, the coefficients are compressed. The desired parameters can be specified with the pars argument; parnames gives a list of the parameters to choose from.

#parnames(model_species_temp)
mcmc_intervals(
  posterior,
  pars = vars(starts_with("r_fml") & !matches("intercept"))
)

Adding in correlation

Some amount of correlation will come because the occurrences are all next to each other and the temperatures vary across that. We can add an extra term gp to the formula to describe this autocorrelation based on the palaeocoordinates. This describes a Gaussian process (and a multivariate one at that), which builds in the autocorrelation between the occurrence positions. The implementation below is inspired by this one.

In this case the Gaussian process we want works on the distances between each occurrence: closer occurrences have more similar values with the model (often on the standard deviation). Thus, we give the Gaussian process the palaeocoordinates; brms then generates the correlation structure that Stan uses in the model and MCMC.

Warning, this will be slow! (Multiple hours to complete.) I suggest playing with the models above then thinking about using this one later. When using multiple chains, the time taken for each chain can also be very different as the starting points are randomized.

model_species_temp_autocorr <-
  brm(
    kpg_ext ~ 1 + (pocn_temp_scaled | fml) + gp(plng, plat, scale = FALSE),
    data = species_temp_scaled,
    family = bernoulli(),
    sample_prior = TRUE,
    iter = 4000, chains = 4, cores = 2,
    save_pars = save_pars()
  )
summary(model_species_temp)

posterior <- as_draws_array(model_species_temp_autocorr)

mcmc_intervals(posterior, pars = vars(!matches("prior|lp__|b_|sd_|cor_")))

Another source of covariation is phylogeny, which I haven’t done yet but can include later.

References

Arel-Bundock, Vincent, Nils Enevoldsen, and CJ Yetman. 2018. “Countrycode: An R Package to Convert Country Names and Country Codes.” Journal of Open Source Software 3 (28): 848. https://doi.org/10.21105/joss.00848.
Cao, Wenchao, Sabin Zahirovic, Nicolas Flament, Simon Williams, Jan Golonka, and R. Dietmar Müller. 2017. “Improving Global Paleogeography Since the Late Paleozoic Using Paleobiology.” Biogeosciences 14 (23): 5425–39. https://doi.org/10.5194/bg-14-5425-2017.
Cao, Xianzhi, Sabin Zahirovic, Sanzhong Li, Yanhui Suo, Pengcheng Wang, Jinping Liu, and R. Dietmar Müller. 2022. “A Deforming Plate Tectonic Model of the South China Block Since the Jurassic.” Gondwana Research, Tectonic Evolution of Ocean-Continent Connection Zones, 102 (February): 3–16. https://doi.org/10.1016/j.gr.2020.11.010.
Garnier, Simon, Ross, Noam, Rudis, Robert, Camargo, et al. 2021. viridis - Colorblind-Friendly Color Maps for r (version 0.6.2). https://doi.org/10.5281/zenodo.4679424.
Müller, R. Dietmar, Sabin Zahirovic, Simon E. Williams, John Cannon, Maria Seton, Dan J. Bower, Michael G. Tetley, et al. 2019. “A Global Plate Model Including Lithospheric Deformation Along Major Rifts and Orogens Since the Triassic.” Tectonics 38 (6): 1884–1907. https://doi.org/10.1029/2018TC005462.
Ooms, Jeroen. 2014. “The Jsonlite Package: A Practical and Consistent Mapping Betwe En JSON Data and r Objects.” arXiv. https://doi.org/10.48550/arXiv.1403.2805.
Pebesma, Edzer. 2018. “Simple Features for r: Standardized Support for Spatial Vector Data.” The R Journal 10 (1): 439–46. https://doi.org/10.32614/RJ-2018-009.
Ridgwell, Andy, and Daniela N. Schmidt. 2010. “Past Constraints on the Vulnerability of Marine Calcifiers to Massive Carbon Dioxide Release.” Nature Geoscience 3 (3, 3): 196–200. https://doi.org/10.1038/ngeo755.
South, Andy. 2017a. Rnaturalearth: World Map Data from Natural Earth (version 0.1.0). https://CRAN.R-project.org/package=rnaturalearth.
———. 2017b. Rnaturalearthdata: World Vector Map Data from Natural Earth Used in ’Rnaturalearth’. Manual. https://CRAN.R-project.org/package=rnaturalearthdata.
Torsvik, Trond H., Bernhard Steinberger, Grace E. Shephard, Pavel V. Doubrovine, Carmen Gaina, Mathew Domeier, Clinton P. Conrad, and William W. Sager. 2019. “Pacific-Panthalassic Reconstructions: Overview, Errata and the Way Forward.” Geochemistry, Geophysics, Geosystems 20 (7): 3659–89. https://doi.org/10.1029/2019GC008402.
Ushey, Kevin, JJ Allaire, and Yuan Tang. 2022. Reticulate: Interface to ’Python (version 1.24). https://CRAN.R-project.org/package=reticulate.
Wickham, Hadley, Mara Averick, Jennifer Bryan, Winston Chang, Lucy D’Agostino McGowan, Romain François, Garrett Grolemund, et al. 2019. “Welcome to the tidyverse.” Journal of Open Source Software 4 (43): 1686. https://doi.org/10.21105/joss.01686.
Young, Alexander, Nicolas Flament, Kayla Maloney, Simon Williams, Kara Matthews, Sabin Zahirovic, and R. Dietmar Müller. 2019. “Global Kinematics of Tectonic Plates and Subduction Zones Since the Late Paleozoic Era.” Geoscience Frontiers, Special Issue: Advances in Himalayan Tectonics, 10 (3): 989–1013. https://doi.org/10.1016/j.gsf.2018.05.011.
Zizka, Alexander, Daniele Silvestro, Tobias Andermann, Josue Azevedo, Camila Duarte Ritter, Daniel Edler, Harith Farooq, et al. 2019. CoordinateCleaner: Standardized Cleaning of Occurrence Records from Biological Collection Databases.” Methods in Ecology and Evolution, no. 10: –7. https://doi.org/10.1111/2041-210X.13152.